ヤマムギ

growing hard days.

*

cfn-signalの認証とネットワーク

   

AWS CloudFormationヘルパースクリプトのcfn-signalがCloudFormationへシグナルを送信する際の、認証とネットワークについてご質問がありましたので調べてみました。

結論

  • 認証は必要ありません。
  • CloudFormationのAPIエンドポイントへ到達できるネットワークが必要です。
    プライベートサブネットのEC2インスタンスからは、NAT Gateway→Internet Gatewayか、CloudFormationのVPCエンドポイントが必要です。

cfn-signalのユーザーガイドにも「cfn-signal は認証情報を必要としない」と記載があるのですが、一応試してみました。

検証した構成

テンプレート

共通のテンプレートを使用し、スタック作成時に指定するサブネットをパブリックサブネットとプライベートサブネットで分けました。
オートスケーリンググループのCreationPolicyでシグナルを1つ待っています。
EC2インスタンスのユーザーデータでcfn-signalを実行しています。
EC2インスタンスにはIAMロールを設定していませんので、認証情報は与えていません。

結果

パブリックサブネットを指定して作成したスタックは無事作成が完了しました。

プライベートサブネットを指定して作成したスタックは、タイムアウト10分後に次のエラーでオートスケーリンググループの作成がCREATE_FAILEDになりロールバックしました。
Received 0 SUCCESS signal(s) out of 1. Unable to satisfy 100% MinSuccessfulInstancesPercent requirement

結局のところ認証は?

CloudTrailで該当のログを見てみました。

  • eventname: SignalResource
  • sourceipaddress: EC2のパブリックIPアドレス
  • useragent: CfnTools/2.0-30 (Linux-6.1.97-104.177.amzn2023.x86_64-x86_64-with-glibc2.34) python/3.9.16
  • userIdentity: {type=Unknown, principalid=, arn=null, accountid=123456789012, invokedby=null, accesskeyid=null, username=, sessioncontext=null}
  • {“stackName”:”PublicTest”,”logicalResourceId”:”WebServerGroup”,”uniqueId”:”i-059e89e7746dd04c7″,”status”:”SUCCESS”}

アカウントは指定していますが、匿名ユーザーとしてSignalResourceアクションを許可しているようですね。


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

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

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

 - AWS ,

  関連記事

EC2にSystems MangerからCloudWatchエージェントをインストール

CloudWatchエージェント EC2の標準メトリクスでは収集できないメモリの …

AWS Cost Explorerの設定で「EC2リソースの推奨事項を受け取る」を有効にしました

「EC2リソースの推奨事項を受け取る」という機能がAWS Cost Explor …

リザーブドインスタンス推奨事項を確認した

マネジメントコンソールで[AWSコスト管理]カテゴリの[AWS Cost Exp …

VPC環境でLambdaを100同時実行してプライベートIPアドレスを確認した

2019年9月発表のLambda 関数が VPC 環境で改善されます以降に、VP …

Route 53 の加重ラウンドロビンルーティングでロードバランサー

Route 53の加重ラウンドロビンで両方1に設定してみました。 上図はイメージ …

AWSアカウントでルートユーザーが使用されたときにTeamsへ投稿する

Organizations組織内のアカウントのいずれかでルートユーザーが使用され …

EC2インスタンスが到達不能になって復旧してMackerelで監視し始めた

きっとばりばり使っておられる方ならよくある事なんだろうけど、はじめて体験したので …

RocketChatの匿名登録時のtoo many requestsエラー対応

匿名ユーザー登録時のtoo many requestsエラー RocketCha …

Pandocサーバーのコンテナイメージを作成する

マークダウンからEPUBへの変換をAWS Batchで行いたく、ECRにアップロ …

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

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