share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.10.13 WED

Kinesis Data Firehose クロスアカウントS3 への配信

新川 貴章

WRITTEN BY 新川 貴章

概要

  • 本記事は、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 から確認可能です。

参考資料

IAM を使用して Kinesis Data Firehose リソースへのアクセスを制御します。

元記事はこちら

https://oji-cloud.net/2021/10/09/post-6602/?utm_source=rss&utm_medium=rss&utm_campaign=post-6602


アイレットなら、AWS で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業をすべて一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。AWS プレミアコンサルティングパートナーであるアイレットに、ぜひお任せください。

AWS 運用・保守サービスページ:
https://cloudpack.jp/service/aws/maintenance.html

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://cloudpack.jp/contact/form/

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。