を使用したアプリケーションの公開 AWS SAMCLI - AWS Serverless Application Model

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

を使用したアプリケーションの公開 AWS SAMCLI

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

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

前提条件

AWS Serverless Application Repository を使用して にアプリケーションを発行する前に AWS SAMCLI、以下が必要です。

  • インストール済みの 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セクションを追加する

まず、 AWS SAM テンプレートに Metadata セクションを追加します。 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 SAMCLIコマンドを実行します。

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 「リソースベースのポリシーの例」を参照してください。 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 以外の任意の番号) を使用する必要があります。

その他のトピック