ヤマムギ

growing hard days.

*

CloudFormation Lambda-backedカスタムリソースチュートリアルをやりました

      2021/05/18


チュートリアル: Amazon マシンイメージ ID を参照するの手順に従ってやってみました。

サンプルのシナリオでは、カスタムリソースによってAMI IDを取得して、EC2インスタンスを起動します。

サンプルパッケージをS3にアップロード

チュートリアルのLinuxAMI向けサンプルパッケージをダウンロードしました。
https://s3.amazonaws.com/cloudformation-examples/lambda/amilookup.zip

手順では、このままS3バケットを作ってアップロードですが、コードを見てみました。
Node.jsのjsファイルが1つ格納されたzipでした。

ec2.describeImagesで、AMI ID一覧を取得しています。

CloudFormationテンプレートURLを指定して実行

カスタムリソースはここで、ServiceTokenでLambdaのARNを指定していました。

EC2インスタンスのImageIdでカスタムリソースのIdを指定していました。

実行してみてLambdaのログ確認。

{
“RequestType”: “Create”,
“ServiceToken”: “arn:aws:lambda:us-east-2:123456789012:function:cfn-custom-test-AMIInfoFunction-61QM467KMJPS”,
“ResponseURL”: “https://cloudformation-custom-resource-response-useast2.s3.us-east-2.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-2%3A354679900484%3Astack/cfn-custom-test/bf321240-b7b7-11eb-b482-0a855f8e3818%7CAMIInfo%7Cf49a0b92-ed7f-4ca3-897b-f55db96ee0c0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20210518T090243Z&X-Amz-SignedHeaders=host&X-Amz-Expires=7199&X-Amz-Credential=AKIAVRFIPK6PGI5JAKHW%2F20210518%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Signature=b36ccfaac4df0677559a3fb3237ec7ab3ca22248e26ddb25fd5337b152173f41”,
“StackId”: “arn:aws:cloudformation:us-east-2:123456789012:stack/cfn-custom-test/bf321240-b7b7-11eb-b482-0a855f8e3818”,
“RequestId”: “f49a0b92-ed7f-4ca3-897b-f55db96ee0c0”,
“LogicalResourceId”: “AMIInfo”,
“ResourceType”: “Custom::AMIInfo”,
“ResourceProperties”: {
“ServiceToken”: “arn:aws:lambda:us-east-2:123456789012:function:cfn-custom-test-AMIInfoFunction-61QM467KMJPS”,
“Architecture”: “HVM64”,
“Region”: “us-east-2”
}
}

eventに含まれるResponseURLに、以下のようなresponseを生成して、POSTしていました。
StackId、RequestId、LogicalResourceIdもeventに含まれていました。

{
“Status”: “SUCCESS”,
“Reason”: “See the details in CloudWatch Log Stream: 2021/05/18/[$LATEST]72dda23573e44d8da5ff94fd5359f510”,
“PhysicalResourceId”: “2021/05/18/[$LATEST]72dda23573e44d8da5ff94fd5359f510”,
“StackId”: “arn:aws:cloudformation:us-east-2:123456789012:stack/cfn-custom-test/bf321240-b7b7-11eb-b482-0a855f8e3818”,
“RequestId”: “f49a0b92-ed7f-4ca3-897b-f55db96ee0c0”,
“LogicalResourceId”: “AMIInfo”,
“Data”: {
“Id”: “ami-0609df53e9a5df49c”
}
}

DataのIdを{ “Fn::GetAtt”: [ “AMIInfo”, “Id” ] }で取得して使用しているのですね。

終わったあとはスタックを削除しました。


最後までお読みいただきましてありがとうございました!

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

i

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

 - AWS ,

ad

ad

  関連記事

Amazon SES(Simple Email Service)でメール受信時のアクションでLambdaを実行して渡されるデータを見てみる

Amazon SESで受信したメールをS3に保存して、S3のトリガーでLambd …

AWS CodeStarのプロジェクトテンプレートLambda+Pythonによって生成されるもの

勉強会のデモで、AWS CodeStarのプロジェクトテンプレートLambda+ …

VPCピア接続ではピア先VPCのセキュリティグループIDを指定できる

タイトルどおりです。 できることは知ってたのですが、試したことがなかったので、確 …

Cloud9でSAMローカルテスト

せっかくテストするので、Amazon CloudSearchからAmazon E …

AWS APIリクエストにPostmanで署名を作成する

新年明けましておめでとうございます! 署名バージョン4 「AWSはマネジメントコ …

Rocket.ChatにAPIで投稿するテスト(Postman)

トレーニング期間中で一時利用するチャットが欲しいなあと思い、Rocket.Cha …

AWS Toolkit for EclipseからLambda関数を直接作成できずにMavenでパッケージ化して作成

AWS Toolkit for EclipseからLambda関数を直接作成 チ …

AWS CloudWatch LogsエージェントでAmazon EC2上のNginxのaccess.log , error.log , php-fpm error.log , Linuxのmessages , secureログを収集する

参考ページ クイックスタート: 実行中の EC2 インスタンスに CloudWa …

AWS Certificate Manager(ACM)メール検証をDNS検証の証明書に差し替えました

ブログの証明書 このブログの証明書の有効期限があと1週間です。 証明書はAWS …

Redmineの添付ファイルをS3に同期する

RedmineをAWS上で構築するデザインを考えていて、せっかくなので冗長化しよ …