AWS SAM CLI を使用したサーバーレスアプリケーションの公開 - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SAM CLI を使用したサーバーレスアプリケーションの公開

他のユーザーが AWS SAM アプリケーションを見つけてデプロイできるようにするには、AWS SAM CLI を使用してアプリケーションを AWS Serverless Application Repository に公開できます。AWS SAM CLI を使用してアプリケーションを公開するには、AWS SAM テンプレートを使用してアプリケーションを定義する必要があります。それをローカルで、または AWS クラウドでテストする必要もあります。

このトピックの手順に従って、新しいアプリケーションを作成、既存アプリケーションの新しいバージョンを作成、または既存アプリケーションのメタデータを更新します。(何を実行するかは、アプリケーションがすでに AWS Serverless Application Repository に存在しているかどうか、およびアプリケーションメタデータが変更されているかどうかに応じて異なります。) アプリケーションメタデータの詳細については、「AWS SAM テンプレートのメタデータセクションのプロパティ」を参照してください。

前提条件

以下は、AWS SAM CLI を使用してアプリケーションを AWS Serverless Application Repository に公開するための前提条件です。

  • インストール済みの AWS SAM CLI。詳細については、「AWS SAM CLIのインストール」を参照してください。AWS SAM CLI がインストールされているかどうかを確認するには、以下のコマンドを実行します。

    sam --version
  • 有効な AWS SAM テンプレート。

  • AWS SAM テンプレートが参照するアプリケーションのコードと依存関係。

  • セマンティックバージョン (アプリケーションをパブリックに共有する場合にのみ必要)。この値は 1.0 といったシンプルなものを使用できます。

  • アプリケーションのソースコードをポイントする URL。

  • README.md ファイル。このファイルには、お客様がアプリケーションを使用する方法、およびお客様独自の AWS アカウントでアプリケーションをデプロイする前の設定方法が説明されている必要があります。

  • LICENSE.txt ファイル (アプリケーションをパブリックに共有する場合にのみ必要)。

  • アプリケーションにネストされたアプリケーションが含まれている場合は、それらがすでに AWS Serverless Application Repository で公開されている必要があります。

  • アプリケーションをパッケージ化するときに Amazon Simple Storage Service (Amazon S3) にアップロードするアーティファクトに対する読み取り許可をサービスに付与する、有効な Amazon S3 バケットポリシー。このポリシーを設定するには、以下を実行します。

    1. https://console.aws.amazon.com/s3/でAmazon S3 コンソールを開きます。

    2. アプリケーションのパッケージ化に使用した Amazon S3 バケットの名前を選択します。

    3. [Permissions] (アクセス許可) をクリックします。

    4. [Permissions] (アクセス許可) タブの [Bucket policy] (バケットポリシー) で [Edit] (編集) をクリックします。

    5. [Edit bucket policy] (バケットポリシーを編集) ページで、[Policy] (ポリシー) エディタに以下のポリシーステートメントを貼り付けます。ポリシーステートメントでは、Resource エレメントにお使いのバケット名、AWS エレメントにお使いの Condition アカウント ID を使用するようにしてください。Condition エレメントの式は、AWS Serverless Application Repository が、指定された AWS アカウントからのアプリケーションのみにアクセスする許可を持っていることを確実にします。ポリシーステートメントの詳細については、IAM ユーザーガイドの「IAM JSON ポリシーの要素のリファレンス」を参照してください。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "serverlessrepo.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<your-bucket-name>/*", "Condition" : { "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }
    6. [Save changes] (変更の保存) をクリックします。

新しいアプリケーションの公開

ステップ 1: AWS SAM テンプレートに Metadata セクションを追加する

まず、Metadata テンプレートに AWS SAM セクションを追加します。AWS Serverless Application Repository に公開するアプリケーション情報を入力します。

以下は、Metadata セクションの例です。

Metadata: AWS::ServerlessRepo::Application: Name: my-app Description: hello world Author: user1 SpdxLicenseId: Apache-2.0 LicenseUrl: LICENSE.txt ReadmeUrl: README.md Labels: ['tests'] HomePageUrl: https://github.com/user1/my-app-project SemanticVersion: 0.0.1 SourceCodeUrl: https://github.com/user1/my-app-project Resources: HelloWorldFunction: Type: AWS::Lambda::Function Properties: ... CodeUri: source-code1 ...

AWS SAM テンプレートの Metadata セクションに関する詳細については、「AWS SAM テンプレートのメタデータセクションのプロパティ」を参照してください。

ステップ 2: アプリケーションをパッケージ化する

以下の AWS SAM CLI コマンドを実行します。このコマンドは、アプリケーションアーティファクトを Amazon S3 にアップロードし、packaged.yaml と呼ばれる新しいテンプレートファイルを出力します。

sam package --output-template-file packaged.yaml --s3-bucket <your-bucket-name>

この packaged.yaml テンプレートファイルは、次のステップでアプリケーションを AWS Serverless Application Repository に公開するために使用します。このファイルは元のテンプレートファイル (template.yaml) と似ていますが、CodeUriLicenseUrl、および ReadmeUrl プロパティが、それぞれのアーティファクトが含まれる Amazon S3 バケットとオブジェクトをポイントするという重要な相違点があります。

packaged.yaml テンプレートファイルの例から次のスニペットは、CodeUri プロパティを示しています。

MySampleFunction: Type: AWS::Serverless::Function Properties: CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID ...

ステップ 3: アプリケーションを公開する

AWS SAM アプリケーションのプライベートバージョンを AWS Serverless Application Repository に公開するには、以下の AWS SAM CLI コマンドを実行します。

sam publish --template packaged.yaml --region us-east-1

sam publish コマンドの出力には、AWS Serverless Application Repository 上のアプリケーションへのリンクが含まれます。また、AWS Serverless Application Repository ランディングページに直接移動して、アプリケーションを検索することもできます。

ステップ 4: アプリケーションを共有する (オプション)

アプリケーションはデフォルトでプライベートに設定されているため、他の AWS アカウントには表示されません。アプリケーションを他のユーザーと共有するには、アプリケーションをパブリックにするか、特定の AWS アカウントのリストに許可を付与する必要があります。

AWS CLI を使用してアプリケーションを共有する方法については、AWS Serverless Application Repository デベロッパーガイドの「AWS Serverless Application Repository Resource-Based Policy Examples」を参照してください。AWS Management Console を使用したアプリケーションの共有については、AWS Serverless Application Repository デベロッパーガイドの「Sharing an Application」を参照してください。

既存アプリケーションの新しいバージョンの公開

アプリケーションを AWS Serverless Application Repository に公開した後、新しいバージョンの公開が必要になる場合があります。例えば、Lambda 関数コードを変更したり、アプリケーションアーキテクチャに新しいコンポーネントを追加した場合などです。

以前に公開したアプリケーションを更新するには、上記と同じプロセスを使用してアプリケーションを再度公開します。AWS SAM テンプレートファイルの Metadata セクションには、最初に公開したときのものと同じアプリケーション名を入力しますが、新しい SemanticVersion 値を含めてください。

例えば、アプリケーションが SampleApp という名前と、1.0.0SemanticVersion で公開されたとします。そのアプリケーションを更新するには、AWS SAM テンプレートにアプリケーション名 SampleApp と、1.0.1SemanticVersion (または 1.0.0 以外の任意の番号) を使用する必要があります。

その他のトピック