SAM プロジェクトで管理する API Gateway のアクセスログを有効化する
概要
SAM プロジェクトで管理する API Gateway について
AWS Config rule: api-gw-execution-logging-enabled
に対応すべく、
アクセスログを有効化した際にハマった話です。
Events.*.Type = Api
で作成した API Gateway では SAM 上でアクセスログ有効化の設定ができません。
どのようにしたら API Gateway のアクセスログ有効化できるか調査しました。
SAM template.yml 設定
1 | Resources: |
結論
2023-07-07 時点、
API Gateway を新たに作成しそちらに乗り換えるしか方法がありません。
その場合、カスタムドメインでない限り、API Gateway のドメインは変更されます。
Type: AWS::Serverless::Api
等、別途 API Gateway 作成し、RestApiId
で参照することで
アクセスログや X-Ray Tracing の有効化が可能でした。
1 | Resources: |
もしドメイン変更を許容しない場合は、コンソール上でアクセスログを有効化することは可能です。
sam deploy 後も上記処理について変更がないことを確認済みです。
試したこと (NG 集)
AWS::Serverless::Api で定義し API Gateway をインポートしようとすると以下エラー発生
1
ResourceTypes [AWS::Serverless::Api] are not supported for Import
AWS::ApiGateway::RestApi で定義し API Gateway をインポートしようとすると以下エラー発生
1
You have modified resources [ServerlessRestApi, ServerlessRestApiDeployment2ababeb14f, ServerlessRestApiProdStage, FunctionMessagePermissionProd] in your template that are not being imported. Update, create or delete operations cannot be executed during import operations.
他リソースの設定が不足しているようだ。
AWS::ApiGateway::Stage のみインポートしようとすると以下エラー発生
1
abcd1a2b3c|Prod already exists in stack arn:aws:cloudformation:ap-northeast-1:123456789012:stack/Bot-Stack/e50458c0-1234-12ab-a12f-123a4b5c6d7e
以上
参考になれば幸いです。
SAM プロジェクトで管理する API Gateway のアクセスログを有効化する
https://kenzo0107.github.io/2023/07/06/2023-07-07-aws-sam-enable-apigateway-accesslog/