2017-09-23 21 views
0

AWS::CloudFormation::Initセクションを使用するCloudFormationスクリプトでS3バケットからアクセス拒否(403)で失敗したファイルをダウンロードしています。"aws s3 cp"が動作してもcfn-initはS3ファイルをダウンロードできません

AWS::IAM::InstanceProfileを使用してs3accessという名前のIAMロールをマシンに追加しました。私は明示的にIAM役割を設定しようとしたが、それはあまりにも失敗した

[[email protected] ~]$ sudo /opt/aws/bin/cfn-init -v --stack test --resource EC2 --region us-east-2 
Error occurred during build: Failed to retrieve https://s3.us-east-2.amazonaws.com/my-bucket/test-file: HTTP Error 403 :

[[email protected] ~]$ sudo /opt/aws/bin/cfn-init -v --stack test --resource EC2 --region us-east-2 --role=s3access 
AccessDenied: User: arn:aws:sts::196375698259:assumed-role/s3access/i-044499612c92b50f5 is not authorized to perform: cloudformation:DescribeStackResource on resource: arn:aws:cloudformation:us-east-2:196375698259:stack/test/*

私が使用してと思ってい

[[email protected] ~]$ aws s3 cp s3://my-bucket/test-file 
.download: s3://my-bucket/test-file to ./test-file   

しかしcfn-init失敗:aws s3作品を使用してファイルをダウンロードしますaws s3 cp s3://my-bucket/test-file ./を直接ユーザーデータから取得しましたが、なぜAWS::CloudFormation::InitがEC2インスタンスに割り当てられた役割を果たすのに失敗したのかを知りたいと思います。

似たような質問が1つしか見つかりませんでしたが、私がすでに行っているIAMの役割を適用するという解決策があり、cfn-initはまだ失敗します。

+0

テンプレートを表示した方が簡単でしょう – Raniz

+1

cfn-initを使用する利点はほとんどありません。 CloudFormationのuserDataにaws s3のコピーロジックを入れて、s3の読み取りアクセスに関連するEC2インスタンスにロール/ポリシー権限を与えるだけで、うまくいきます。 –

答えて

0

IAMの役割をクラウドインフォメーションインスタンスに与える方法はいくつかあります。

  • あなたのUserDataで、たとえば、cloudformationテンプレートにあなたのIAM役割の識別を置くことができます。しかし、これにより、あなたのIAMに秘密の問題が発生します。
  • スタックにパラメータを置くことができるので、スタックを作成するたびにIAMロールを指定できます。これは、スタックを頻繁に作成する必要があるスタックをテストするのには本当に楽しいことではありません。
  • 最後に新しいインスタンスを起動し、IAMロールを追加し、そのインスタンスのAMIを作成します。このAMIを使用して、輻輳スタックインスタンスを作成します。このオプションを使用することで、インスタンス上でs3コマンドが最初に動作することを確認し、パラメータと機密の問題に対処する必要がなくなります。
関連する問題