Lambda 実行ロールのアクセス許可の設定 - AWS Lambda

Lambda 実行ロールのアクセス許可の設定

Amazon MSK クラスターにアクセスするには、関数とイベントソースマッピングはさまざまな Amazon MSK API アクションを実行するアクセス許可を必要とします。これらのアクセス許可を、関数の実行ロールに追加します。アクセスを必要とするユーザーがいる場合、そのユーザーまたはロールのアイデンティティポリシーに必要なアクセス許可を追加します。

必要なアクセス許可をすべてカバーするには、AWSLambdaMSKExecutionRole のマネージドポリシーを実行ロールにアタッチします。または、各アクセス許可を手動で追加することもできます。

基本的なアクセス許可

CloudWatch Logs でログを作成して保存するには、Lambda 関数の実行ロールに次の必要なアクセス許可を付与してください。

クラスターのアクセス許可

Lambda がユーザーに代わって Amazon MSK クラスターにアクセスするには、Lambda 関数の実行ロールに次の許可が必要です。

kafka:DescribeCluster または kafka:DescribeClusterV2 のうちいずれか一つを追加してください。プロビジョニングされた Amazon MSK クラスターの場合、どちらかのアクセス許可でも機能します。サーバーレス Amazon MSK クラスターの場合は kafka:DescribeClusterV2 を使用する必要があります。

注記

Lambda では今後、AWSLambdaMSKExecutionRole のマネージドポリシーから kafka:DescribeCluster のアクセス許可を削除する予定です。現在 kafka:DescribeCluster ポリシーを使用している場合、使用対象のアプリケーションを kafka:DescribeClusterV2 へ移行させてください。

VPC アクセス許可

Amazon MSK クラスターが VPC のプライベートサブネットにある場合、Lambda 関数が Amazon VPC リソースにアクセスするには追加のアクセス許可が必要です。対象となるリソースには、VPC、サブネット、セキュリティグループ、ネットワークインターフェイスが含まれます。関数の実行ロールには、次のアクセス許可が必要です。

オプションのアクセス許可

Lambda 関数には、以下を実行する許可も必要になる場合があります。

  • SASL/SCRAM 認証を使用している場合、SCRAM シークレットにアクセスします。これにより、関数はユーザー名とパスワードを使用して Kafka に接続できます。

  • SASL/SCRAM または mTLS 認証を使用している場合、Secrets Manager のシークレットを記述します。これにより、関数は安全な接続に必要な認証情報または証明書を取得できます。

  • フィルター条件を暗号化したい場合、AWS KMS カスタマーマネージドキーにアクセスします。これにより、メッセージフィルタリングルールを秘密に保持できます。

  • 認証付きのスキーマレジストリを使用している場合、スキーマレジストリシークレットにアクセスします。

    • AWS Glue Glue スキーマレジストリの場合、関数には glue:GetRegistryglue:GetSchemaVersion のアクセス許可が必要です。これにより、関数は AWS Glue に保存されているメッセージ形式のルールを検索して使用できます。

    • BASIC_AUTH または CLIENT_CERTIFICATE_TLS_AUTH を使用した Confluent スキーマレジストリの場合: 関数には、認証情報を含むシークレットに対する secretsmanager:GetSecretValue アクセス許可が必要です。これにより、関数は Confluent スキーマレジストリにアクセスするために必要なユーザー名/パスワードまたは証明書を取得できます。

    • プライベート CA 証明書の場合: 関数には、証明書を含むシークレットに対する secretsmanager:GetSecretValue アクセス許可が必要です。これにより、関数はカスタム証明書を使用するスキーマレジストリの ID を検証できます。

この対象となるのは以下のアクセス許可です。

  • kafka:ListScramSecrets - Kafka 認証用の SCRAM シークレットのリストを許可します

  • secretsmanager:GetSecretValue - Secrets Manager からのシークレットの取得を有効にします

  • kms:Decrypt - AWS KMS を使用して暗号化されたデータの復号を許可します

  • glue:GetRegistry - AWS Glue スキーマレジストリへのアクセスを許可します

  • glue:GetSchemaVersion - AWS Glue スキーマレジストリから特定のスキーマバージョンを取得できるようにします

さらに、失敗した呼び出しのレコードを障害発生時の送信先に送信する場合、送信先タイプに応じて次のアクセス許可が必要です。

  • Amazon SQS 送信先の場合: sqs:SendMessage - Amazon SQS キューへのメッセージの送信を許可します

  • Amazon SNS 送信先の場合: sns:Publish - Amazon SNS トピックへのメッセージの発行を許可します

  • Amazon S3 バケット送信先の場合: s3:PutObject および s3:ListBucket - Amazon S3 バケット内のオブジェクトの書き込みと一覧表示を有効にします

認証および承認エラーをトラブルシューティングするには、「セルフマネージド Kafka イベントソースマッピングエラーのトラブルシューティング」を参照してください。