- 1. 概要
- 2. Kinesis Data Firehose にクロスアカウントのS3 を指定する
- 3. Destination error logs にAccess was denied検出
- 4. 参考資料
概要
- 本記事は、AWS コンソールを利用したKinesis Data Firehose を作成時の注意事項です。Kinesis Data Firehose のDestination に「S3」を選択し、S3 bucketにバケットを指定します。以下の画面となります。
- 上記S3 bucket の指定に、クロスアカウントのS3 を指定した場合、"This S3 bucket doesn’t exist." のエラーとなります。AWSコンソールは、クロスアカウントのS3 を設定することができません。
Kinesis Data Firehose にクロスアカウントのS3 を指定する
- Terraform を利用して、Kinesis Data Firehose を作成します。本記事では、Terraform を利用したデプロイ方法は省略します。Terraform のドキュメントを参照ください。
- Kinesis Data Firehose にクロスアカウントのS3 を指定する場合に、ハマるポイントが2箇所あります。
- 1つ目は、Kinesis Data Firehose に“s3:PutObjectAcl" が必要となります。
- 2つ目は、Destination に設定するクロスアカウントのS3 にバケットポリシーを設定します。
- Kinesis Data Firehose があるアカウント番号、IAM Role名を指定します。
- こちらもAction に “s3:PutObjectAcl" が必要となります。
{ "Version": "2012-10-17", "Id": "PolicyID", "Statement": [ { "Sid": "StmtID", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountA-id:role/iam-role-name" }, "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] } ] }
Destination error logs にAccess was denied検出
- Kinesis Data Firehose のDestination error logs に下記のエラーメッセージが出力された場合は、Kinesis Data Firehose に設定するIAM Role あるいはS3 のバケットポリシーに不足があります。再度、ポリシーのAction に “s3:PutObjectAcl" が設定されていることを確認下さい。
Access was denied. Ensure that the trust policy for the provided IAM role allows Firehose to assume the role, and the access policy allows access to the S3 bucket.
- Kinesis Data Firehose のDestination error logs は、Kinesis Data Firehose のコンソール or CloudWatch Logs から確認可能です。
参考資料
元記事はこちら
https://oji-cloud.net/2021/10/09/post-6602/
アイレットなら、AWS で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業をすべて一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。AWS プレミアコンサルティングパートナーであるアイレットに、ぜひお任せください。
AWS 運用・保守サービスページ:
https://cloudpack.jp/service/aws/maintenance.html
その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://cloudpack.jp/contact/form/