Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

Today I Learned - 2026-06-09

今日学んだことを雑多に書く。

route53:GetHostedZoneのPermissionエラーでCloudFormationスタックのデプロイに失敗する

AccessDenied. User doesn't have permission to call route53:GetHostedZone. Rollback requested by user.
  • テンプレートのパラメータで Route53 ホストゾーンを型指定している yaml HostedZoneId: Type: AWS::Route53::HostedZone::Id Default: Z0123xxxxxxxxxxxxxxxx Description: Route53 hosted zone ID.
  • マネージメントコンソールでデプロイしている
  • CloudFormation のサービスロールでroute53:GetHostedZoneを許可している

デフォルト値のZ0123xxxxxxxxxxxxxxxxが、その環境に存在しないホストゾーン ID だったことが原因。おそらくデプロイの際に内部的にroute53:GetHostedZoneを実行していると思われる。

解決策はDefault属性の削除か、またはType属性をStringに変更する。

なお、サービスロールを指定しない場合はサインインユーザーの認証情報がスタックデプロイに使用される。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html

CloudFormation はデフォルトで、スタックオペレーションのためのユーザー認証情報から CloudFormation が生成する一時的なセッションを使用します。サービスロールを指定すると、CloudFormation はロールの認証情報を使用します。

Lambda関数にCloudFormationでタグをつける

Resources:
  StartStepFunctionLambda:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: StartStepFunctionLambda
      # ... その他のプロパティ
      Tags:
        - Key: Environment
          Value: production
        - Key: Project
          Value: my-project