AWS CLIでElastic BeanstalkのプラットフォームARNを検索し、CDKで利用する方法

AWS

AWS Elastic Beanstalkの環境をAWS CDKやCloudFormationで構築するとき、常に最新バージョンを使うための「プラットフォームARN」の書き方が知りたかったので調べた。

list-platform-branches コマンドによる検索

Elastic Beanstalkのプラットフォームブランチ一覧を取得するには、AWS CLIの aws elasticbeanstalk list-platform-branches コマンドを使用する。

以下の例では、東京リージョン(ap-northeast-1)を対象に、「Java(PlatformName)」かつ「Corretto(BranchName)」を含み、ライフサイクル状態が「サポート内(LifecycleState: Supported)」のものを検索している。

実行コマンド

aws elasticbeanstalk list-platform-branches --region ap-northeast-1 --filters @'
[
   {
     "Attribute": "BranchName",
     "Operator": "contains",
     "Values": ["Corretto"]
   },
   {
     "Attribute": "LifecycleState",
     "Operator": "=",
     "Values": ["Supported"]
   },
   {
     "Attribute": "PlatformName",
     "Operator": "=",
     "Values": ["Java"]
   }
]
'@

参考情報

list-platform-branches — AWS CLI 2.35.13 Command Reference
Use the AWS CLI 2.35.13 to run the elasticbeanstalk list-platform-branches command.

実行結果(出力例)

コマンドを実行すると、条件に合致するプラットフォームブランチの情報がJSON形式で返却される。

{
    "PlatformBranchSummaryList": [
        {
            "PlatformName": "Java",
            "BranchName": "Corretto 25 running on 64bit Amazon Linux 2023",
            "LifecycleState": "Supported",
            "BranchOrder": 11400,
            "SupportedTierList": [
                "WebServer/Standard",
                "Worker/SQS/HTTP"
            ]
        },
        {
            "PlatformName": "Java",
            "BranchName": "Corretto 21 running on 64bit Amazon Linux 2023",
            "LifecycleState": "Supported",
            "BranchOrder": 11300,
            "SupportedTierList": [
                "WebServer/Standard",
                "Worker/SQS/HTTP"
            ]
        }
    ]
}

この結果から、対象となる BranchName(例: Corretto 25 running on 64bit Amazon Linux 2023)が特定できる。

プラットフォームARNの構造

取得した BranchName を用いて、Elastic Beanstalkで指定するプラットフォームARNは以下のようになる。

arn:aws:elasticbeanstalk:ap-northeast-1::platform/Corretto 25 running on 64bit Amazon Linux 2023

参考情報

GitHub – aws-actions/aws-elasticbeanstalk-deploy: GitHub Action for deploying applications to AWS Elastic Beanstalk
GitHub Action for deploying applications to AWS Elastic Beanstalk – aws-actions/aws-elasticbeanstalk-deploy

Platform branch ARNs (without a version suffix, e.g., ) automatically select the latest version within that branch at deployment time.

CDKにおけるプラットフォーム指定方法の理解

AWS CDKでBeanstalk環境を定義する際、プラットフォームの指定方法には「プラットフォームARN(platformArn)」と「ソリューションスタック名(solutionStackName)」がある。

プラットフォームARN(platformArn)による指定

プラットフォームARNを指定する方法。

  • メリット:
    環境の新規作成や再構築を行う際、その時点でAWSが提供している最新バージョンが自動的に適用される。
  • デメリット:
    環境を作成するタイミングによって適用されるバージョンが異なる可能性があるため、ステージング環境と本番環境等でバージョンの違いが生じる可能性がある。

ソリューションスタック名(solutionStackName)による指定

特定のバージョン(例: 64bit Amazon Linux 2023 v4.12.2 running Corretto 25)を明示的に指定する方法。

  • メリット:
    バージョンを固定できるため、別リージョンへの展開や環境の再構築を行っても、意図せずバージョンが変動する心配がない。
  • デメリット:
    AWS側で非推奨(Deprecated)やサポート終了(Retired)になる前に、メンテナンスする必要がある。

CDK(Java)コード例

以下は、プラットフォームARNを使用して記述する場合のCDK実装例です。

CfnEnvironment.Builder.create(this, "environment")
    .applicationName("ApplicationName")
    .platformArn("arn:aws:elasticbeanstalk:ap-northeast-1::platform/Corretto 25 running on 64bit Amazon Linux 2023")
    .build();

まとめ

Elastic Beanstalkのプラットフォームはlist-platform-branches コマンドで検索できる。

セキュリティパッチの自動追従を優先する場合は platformArn の利用を、本番環境の厳密なバージョン統制を優先する場合は solutionStackName による固定、プロジェクトの要件に合わせて選択したらいいのではないかと思います。

記事が良かったら、ぜひ応援してください!

Buy Me a Coffee

AWS
スポンサーリンク
シェアする

コメント

タイトルとURLをコピーしました