翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
クイックスタート: アプリケーションの発行
このガイドでは、AWS SAM CLI を使用して、サーバレスアプリケーションのサンプルをダウンロード、構築、テストして、AWS Serverless Application Repository に発行する手順を示します。このサンプルアプリケーションを参考にして、独自のサーバーレスアプリケーションを開発して発行できます。
概要
次の手順は、サーバーレスアプリケーションのサンプルをダウンロード、構築、および発行する方法の概要です。
-
初期化する。
sam init
を使用してテンプレートからサンプルアプリケーションをダウンロードします。 -
ローカルでテストする。
sam local invoke
またはsam local start-api
を使用して、アプリケーションをローカルでテストします。これらのコマンドでは、Lambda 関数をローカルに呼び出しますが、読み取りと書き込みは AWS クラウド内の AWS リソースに対して行われます。 -
パッケージ化する。Lambda 関数に問題がなければ、
sam package
を使用して Lambda 関数、AWS SAM テンプレート、および依存関係を AWS CloudFormation デプロイパッケージとしてバンドルします。このステップでは、AWS Serverless Application Repository にアップロードするアプリケーションに関する情報も含めます。 -
発行する。
sam publish
を使用してアプリケーションを AWS Serverless Application Repository に発行します。このステップの最後で、AWS Serverless Application Repository でアプリケーションを表示し、AWS Serverless Application Repository を使用してアプリケーションを AWS クラウドにデプロイできます。
次のセクションの例 Hello World アプリケーション では、サーバーレスアプリケーションの構築と発行の手順を示します。
Hello World アプリケーション
この演習では、単純な API バックエンドを示す Hello World サーバーレスアプリケーションをダウンロードしてテストします。これには、GET オペレーションと Lambda 関数をサポートする Amazon API Gateway エンドポイントが含まれています。エンドポイントに GET リクエストを送信すると、API Gateway により Lambda 関数が呼び出されます。次に、AWS Lambda は関数を実行します。この関数は、単に hello world
メッセージを返します。
アプリケーションには次のコンポーネントがあります。
-
Hello World アプリケーションの 2AWS SAMAWS つのリソースを定義するテンプレート。1 つは GET オペレーションを使用する API Gateway サービスで、もう 1 つは Lambda 関数です。このテンプレートは、API Gateway GET オペレーションと Lambda 関数の間のマッピングも定義します。
-
Python で書かれたアプリケーションコード。
開始する前に
この演習に必要な設定が整っていることを確認します。
-
管理者権限を持つ IAM ユーザーが含まれている有効な AWS アカウントが必要です。AWS アカウントのセットアップを参照してください。
-
AWS SAM CLI (コマンドラインインターフェイス) をインストールしている必要があります。「AWS SAM CLI のインストール」を参照してください。
-
バージョン 1.16.77 以降の AWS CLI をインストールしている必要があります。「AWS Command Line Interface のインストール」を参照してください。
ステップ 1: アプリケーションの初期化
このセクションでは、AWS SAM テンプレートとアプリケーションコードで構成されるサンプルアプリケーションをダウンロードします。
アプリケーションを初期化する
-
AWS SAM CLI コマンドプロンプトで以下のコマンドを実行します。
sam init --runtime python3.6
-
コマンドで作成されたディレクトリの内容を確認します (
sam-app/
)。-
template.yaml
– Hello World アプリケーションが必要とする 2 つの AWS リソース (Lambda 関数、および GET オペレーションをサポートする API Gateway エンドポイント) を定義します。このテンプレートは、2 つのリソース間のマッピングも定義します。 -
Hello World アプリケーションコードに関連するコンテンツ:
-
hello_world/
ディレクトリ - アプリケーションコードが含まれています。このコードを実行すると、hello world
が返されます。
-
注記
この演習では、アプリケーションコードを Python で記述し、
init
コマンドでランタイムを指定します。AWS Lambda は、アプリケーションコードを作成するための追加の言語をサポートしています。別のサポートされているランタイムを指定すると、init
コマンドは、指定した言語での Hello World コードと、その言語で参照できるREADME.md
ファイルを提供します。サポートされているランタイムの詳細については、Lambda 実行環境と使用可能なライブラリを参照してください。 -
ステップ 2: アプリケーションのローカルテスト
これで、ローカルマシンに AWS SAM アプリケーションが準備されました。次に、以下の手順に従ってアプリケーションをローカルでテストします。
アプリケーションをローカルでテストするには
-
API ゲートウェイエンドポイントをローカルで起動します。
template.yaml
ファイルがあるディレクトリから次のコマンドを実行する必要があります。sam-app> sam local start-api --region us-east-1
このコマンドは API Gateway エンドポイントを返します。このエンドポイントにローカルテストのためのリクエストを送信できます。
-
アプリケーションをテストします。API Gateway エンドポイント URL をコピーしてブラウザに貼り付け、Enter を選択します。API Gateway エンドポイント URL の一例は、
http://127.0.0.1:3000/hello
です。API Gateway は、エンドポイントのマッピング先の Lambda 関数をローカルに呼び出します。Lambda 関数は、ローカルの Docker コンテナで実行され、
hello world
を返します。API Gateway は、テキストが含まれているブラウザへのレスポンスを返します。
演習: メッセージの文字列を変更する
サンプルアプリケーションを正常にテストしたら、簡単な変更を試すために、返されたメッセージの文字列を変更します。
-
/hello_world/app.py
ファイルを編集して、メッセージの文字列を'hello world'
から'Hello World!'
に変更します。 -
ブラウザでテスト URL をリロードし、新しい文字列を確認します。
sam local
プロセスを再起動することなく、新しいコードが動的にロードされることがわかります。
ステップ 3: アプリケーションのパッケージ化
アプリケーションをローカルでテストしたら、AWS SAM CLI を使用してデプロイパッケージとパッケージ化された AWS SAM テンプレートを作成します。
注記
次の手順では、アプリケーションコードを含む hello_world/
ディレクトリの内容の .zip ファイルを作成します。この .zip ファイルは、サーバーレスアプリケーションのデプロイパッケージです。詳細については、AWS Lambda デベロッパーガイドのデプロイパッケージの作成 (Python)を参照してください。
Lambda デプロイパッケージを作成する
-
Metadata
セクションを AWS SAM テンプレートファイルに追加し、必要なアプリケーション情報を指定します。AWS SAM テンプレートのMetadata
セクションの詳細については、AWS Serverless Application Model デベロッパーガイドの AWS SAM テンプレートのメタデータセクションのプロパティを参照してください。次に、
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
LicenseUrl
プロパティとReadmeUrl
プロパティは、ローカルファイルへの参照 (上の例を参照) であるか、これらのアーティファクトをすでにホストしている Amazon S3 バケットへのリンクとなります。 -
パッケージ化されたコードを保存する場所に S3 バケットを作成します。既存の S3 バケットを使用する場合は、このステップをスキップします。
sam-app> aws s3 mb s3://
bucketname
-
次の
package
AWS SAM CLI コマンドを実行して、Lambda 関数のデプロイパッケージを作成します。sam-app> sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket
bucketname
コマンドが以下の操作を行います。
-
aws-sam/hello_world/
ディレクトリの内容を圧縮して Amazon S3 にアップロードします。 -
デプロイパッケージ、README ファイル、および LICENSE ファイルを
--s3-bucket
オプションで指定した Amazon S3 バケットにアップロードします。 -
新しいテンプレートファイル (
packaged.yaml
) を出力します。このファイルは、次のステップでアプリケーションを AWS Serverless Application Repository に発行するために使用します。packaged.yaml
テンプレートファイルは元のテンプレートファイル (template.yaml
) と似ていますが、大きな違いがあります。それは、CodeUri
、LicenseUrl
、およびReadmeUrl
プロパティはそれぞれのアーティファクトを含む Amazon S3 バケットとオブジェクトを指すことです。packaged.yaml
テンプレートファイルの例から次のスニペットは、CodeUri
プロパティを示しています。HelloWorldFunction: Type: AWS::Serverless::Function # For more information about function resources, see https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: s3://
bucketname
/fbd77a3647a4f47a352fcObjectGUID
...
-
ステップ 4: アプリケーションを発行する
デプロイパッケージを作成したので、これを使用してアプリケーションを AWS Serverless Application Repository に発行します。
サーバーレスアプリケーションを AWS Serverless Application Repository に発行するには
-
次のコマンドを実行して、AWS Serverless Application Repository で新しいアプリケーションを発行します。最初に作成するバージョンは 0.0.1 とします。
sam-app> sam publish \ --template packaged.yaml \ --region us-east-1
注記
アプリケーションは、デフォルトで非公開として作成されます。アプリケーションの表示とデプロイを他の AWS アカウントに許可する前に、アプリケーションを共有する必要があります。アプリケーションの共有の詳細については、次のステップ を参照してください。
次のステップ
サンプルアプリケーションを発行したので、次にこれを使用していくつかの操作を行います。
-
AWS Serverless Application Repository でアプリケーションを表示する –
sam publish
コマンドの出力には、アプリケーションの詳細ページを直接表示するための AWS Serverless Application Repository へのリンクが含まれています。AWS Serverless Application Repository ランディングページに移動して、アプリケーションを検索することもできます。 -
アプリケーションを共有する – アプリケーションはデフォルトで非公開に設定されるため、他の AWS アカウントでは表示できません。アプリケーションを他のユーザーと共有するには、アプリケーションを公開とするか、一連の特定の AWS アカウントにアクセス許可を付与する必要があります。AWS CLI を使用してアプリケーションを共有する方法については、「AWS Serverless Application Repositoryアプリケーションポリシーの例」を参照してください。コンソールを使用してアプリケーションを共有する方法については、「アプリケーションの共有」を参照してください。
詳細情報
AWS SAM テンプレートの Metadata
セクション、AWS SAM CLI の sam package
および sam publish
コマンドの詳細については、AWS Serverless Application Model デベロッパーガイドの AWS SAM CLI を使用したアプリケーションの発行を参照してください。