サーバーレスアプリケーションコンポーネントの追加 - AWS Marketplace

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

サーバーレスアプリケーションコンポーネントの追加

1 つ以上の Amazon マシンイメージ (AMI) を含み、1 つ以上のを使用して配信されます。AWS CloudFormationテンプレート。サーバーレスコンポーネントが組み込まれたものです。たとえば、1 つの AMI をコントローラーサーバーとして設定し、別の AMI をワーカーサーバーとして設定し、AWS CloudFormationスタック。スタックの作成に使用される AWS CloudFormation テンプレートには、いずれかのサーバーのイベントによってトリガーされる AWS Lambda 関数を設定するための定義を含めることができます。

このアプローチを使用して製品を設計すると、アーキテクチャを簡素化し、購入者が簡単に起動できるようになります。また、このアプローチにより、製品の更新が容易になります。

製品用の AMI の作成の詳細については、「AMI ベースの製品」を参照してください。製品用の AWS CloudFormation テンプレートの完成については、「AWS CloudFormation を使用した AMI ベース配信」を参照してください。

サーバーレスアプリケーションを定義するときは、AWS Serverless Application Repository に保存する AWS Serverless Application Model (AWS SAM) テンプレートを使用します。AWS SAM は、サーバーレスアプリケーションを構築するためのオープンソースフレームワークです。デプロイ中、AWS SAMを変換して拡張しますAWS Serverless Application Model構文AWS CloudFormation構文。AWS Serverless Application Repository は、サーバーレスアプリケーション用のマネージド型のリポジトリです。再利用可能なアプリケーションを保存して共有できるため、購入者はサーバーレスアーキテクチャを構築してデプロイできます。このタイプの製品を作成して提供するには、次の手順を実行します。

AWS Marketplace は、リスト化される前に製品をレビューおよび検証します。オファーがリスト化される前に解決しなければならない問題がある場合、メールでお知らせします。

サブスクリプションの履行の一環として、AMI、サーバーレスアプリケーション、およびAWS CloudFormationテンプレートをAWS Marketplace-それぞれに所有するリポジトリAWS リージョン。購入者が製品をサブスクライブすると、購入者にアクセス権が付与され、ソフトウェアの更新時にも通知されます。

サーバーレスアプリケーションを作成する

最初のステップは、サーバーレスアプリケーションの作成に使用される AWS Lambda 関数をパッケージ化することです。アプリケーションは、Lambda 関数、イベントソース、およびその他のリソースを組み合わせたもので、協調して動作することによってタスクを実行します。サーバーレスアプリケーションは、1 つの Lambda 関数と同じくらい単純な場合もあれば、API、データベース、イベントソースマッピングなどの他のリソースとともに複数の関数を含む場合もあります。

AWS SAM を使用して、サーバーレスアプリケーションのモデルを定義します。プロパティの名前とタイプの説明については、「」を参照してください。AWS::Serverless::ApplicationにAWSLabs on GitHub。の例を次に示します。AWS SAMLambda 関数を 1 つ含むテンプレートAWS Identity and Access Management(IAM) ロール。

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An example of SAM template with Lambda function and IAM role Resources: SampleFunction: Type: AWS::Serverless::Function Properties: Handler: 'com.sampleproject.SampleHandler::handleRequest' Runtime: java8 CodeUri: 's3://DOC-EXAMPLE-BUCKET/2EXAMPLE-1234-4b12-ac37-515EXAMPLEe5-lambda.zip' Description: Sample Lambda function Timeout: 120 MemorySize: 1024 Role: Fn::GetAtt: [SampleFunctionRole, Arn] # Role to execute the Lambda function SampleFunctionRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Statement: - Effect: "Allow" Principal: Service: - "lambda.amazonaws.com" Action: "sts:AssumeRole" ManagedPolicyArns: - "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" Policies: - PolicyName: SFNXDeployWorkflowDefinitionPolicy PolicyDocument: Statement: - Effect: "Allow" Action: - "s3:Get*" Resource: "*" RoleName: "SampleFunctionRole"

アプリケーションをリポジトリに公開する

アプリケーションを公開するには、最初にアプリケーションコードをアップロードします。アカウントが所有する Amazon S3 バケットにコードアーティファクト (Lambda 関数、スクリプト、構成ファイルなど) を保存します。アプリケーションをアップロードすると、最初はプライベートに設定されます。つまり、アプリケーションを 1 時間以内に迅速に受信でき、AWS アカウントそれが作り出した。を許可する IAM ポリシーを作成する必要がありますAWS Serverless Application Repositoryアップロードしたアーティファクトにアクセスするための権限。

サーバーレスアプリケーションをサーバーレスアプリケーションリポジトリに公開するには

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

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

  3. [Permissions] (許可) タブを選択します。

  4. [バケットポリシー] を選択します。

  5. 次のポリシーステートメントの例をコピーして貼り付けます。

    注記

    ポリシーステートメントの例では、の値が次の値になるまでエラーが生成されます。aws:SourceAccountそしてResourceは、次の手順で更新されます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "serverlessrepo.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition" : { "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }
    1. 置換DOC-EXAMPLE-BUCKETResourceバケットの名前を含むプロパティ値。

    2. 置換123456789012Condition要素とあなたのAWS アカウントID。-Condition要素により、AWS Serverless Application Repository指定されたアプリケーションにのみアクセスする権限があるAWS アカウント。

  6. [Save] (保存) を選択します。

  7. https://console.aws.amazon.com/serverlessrepo で AWS Serverless Application Repository コンソールを開きます。

  8. [My Applications (マイアプリケーション)] ページで、[Create application (アプリケーションの作成)] を選択します。

  9. 必要に応じて、必須フィールドと任意のフィールドに入力します。必須フィールドは次のとおりです。

    • アプリケーション名

    • 筆者

    • 説明

    • ソースコード URL

    • SAM template

  10. [Publish application (アプリケーションの公開)] を選択します。

アプリケーションの後続バージョンを公開するには

  1. https://console.aws.amazon.com/serverlessrepo で AWS Serverless Application Repository コンソールを開きます。

  2. [ナビゲーションペイン] で、[My Applications (マイアプリケーション)] からアプリケーションを選択します。

  3. [Publish new version] (新しいバージョンを発行) を選択します。

詳細については、次を参照してください。を使用してサーバーレスアプリケーションを公開するAWS SAMCLI

CloudFormation テンプレートを作成する

を構築するには CloudFormation テンプレートの前提条件を満たし、必要な入力とセキュリティパラメータを用意する必要があります。詳細については、次を参照してください。テンプレートの分析AWS CloudFormationユーザーガイド

側: CloudFormation テンプレートを使用して、サーバーレスアプリケーションと AMI を参照できます。また、ネストされたを使用することもできます CloudFormation テンプレートと参照サーバーレスアプリケーションは、ルートテンプレートとネストされたテンプレートの両方でサーバーレスアプリケーションを参照します。サーバーレスアプリケーションを参照するには、AWS SAMテンプレート。AWS Serverless Application Repository からアプリケーションの AWS SAM テンプレートを自動的に生成できます。以下はテンプレートの例です。

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An example root template for a SAR application Resources: SampleSARApplication: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-1:1234567890:applications/TestApplication SemanticVersion: 1.0.0 SampleEC2Instance: Type: AWS::EC2::Instance Properties: ImageId: "ami-79fd7eee" KeyName: "testkey" BlockDeviceMappings: - DeviceName: "/dev/sdm" Ebs: VolumeType: "io1" Iops: "200" DeleteOnTermination: "false" VolumeSize: "20" - DeviceName: "/dev/sdk" NoDevice: {}

-AWS SAMテンプレートには、次の要素が含まれています。

  • ApplicationID— アプリケーションの Amazon リソースネーム (ARN)。この情報はマイアプリケーションの セクションAWS Serverless Application Repository。

  • SemanticVersion— サーバーレスアプリケーションのバージョン。これは、からを見つけることができます。マイアプリケーションの セクションAWS Serverless Application Repository。

  • Parameter(オプション) — アプリケーションのパラメータ。

注記

を使用する場合ApplicationIDそしてSemanticVersion,組み込み関数はサポートされていません。それらの文字列をハードコードする必要があります。-ApplicationIDによって複製されると更新されるAWS Marketplace。

設定ファイルとスクリプトファイルを参照する予定がある場合 CloudFormationテンプレート、次の形式を使用します。ネストされたテンプレート (AWS::Cloudformation::Stack)、のみTemplateURLs組み込み関数なしでサポートされます。テンプレートの Parameters の内容に注意してください。

AWSTemplateFormatVersion: '2010-09-09' Metadata: Name: Seller test product Parameters: CFTRefFilesBucket: Type: String Default: "seller-bucket" CFTRefFilesBucketKeyPrefix: Type: String Default: "cftsolutionFolder/additionCFfiles" Resources: TestEc2: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: addCloudAccount: files: /etc/cfn/set-aia-settings.sh: source: Fn::Sub: - https://${CFTRefFilesBucket}.${S3Region}amazonaws.com/${CFTRefFilesBucketKeyPrefix}/sampleScript.sh - S3Region: !If - GovCloudCondition - s3-us-gov-west-1 - s3 owner: root mode: '000700' authentication: S3AccessCreds .. .. .. SampleNestedStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: 'https://sellerbucket.s3.amazon.com/sellerproductfolder/nestedCft.template' Parameters: SampleParameter: 'test' Transform: AWS::Serverless-2016-10-31

送信する CloudFormation テンプレートと設定ファイル

送信するには CloudFormation テンプレートと設定とスクリプトファイル、grantAWS Marketplaceこれらのファイルが保存されている Amazon S3 バケットを読み取るためのアクセス許可。これを行うには、バケットポリシーを更新して以下のアクセス許可を含めます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "assets.marketplace.amazonaws.com" }, "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"] } ] }

AWS Serverless Application Repository アプリケーションのアクセス許可を更新する

AWS Serverless Application Repository アプリケーションを AWS Marketplace に送信するには、アプリケーションを読み取るためのアクセス許可を AWS Marketplace に付与する必要があります。これを行うには、サーバーレスアプリケーションに関連付けられているポリシーにアクセス許可を追加します。アプリケーションポリシーを更新するには 2 つの方法があります。

  • AWS Serverless Application Repository に移動します。リストからサーバーレスアプリケーションを選択します。を選択します共有タブをクリックし、ステートメントの作成。リポジトリの []ステートメントの設定ページで、次のサービスプリンシパルを入力します。assets.marketplace.amazonaws.comアカウント IDフィールド。次に、[Save] (保存) を選択します。

  • 以下を使用しますAWS CLIコマンドを使用して、アプリケーションポリシーを更新します。

    aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=assets.marketplace.amazonaws.com,Actions=Deploy

AMI を共有する

AWS Marketplace に構築され、送信されたすべての AMI は、すべての製品ポリシーに準拠する必要があります。AWS Marketplace 管理ポータル ではセルフサービス AMI スキャンを利用できます。この機能を使用すると、AMI のスキャンを開始できます。結果を 1 時間以内に迅速に受信でき、明確なフィードバックを得ることができます。AMI が正常にスキャンされたら、AWS Marketplace 販売者およびカタログ運用チームによる処理のために AMI を提出し、製品ロードフォームをアップロードすることができます。

AMI とサーバーレスアプリケーションを使用する CloudFormation 製品を送信する

製品を送信する前に、次の点に注意してください。

  • 各テンプレートのトポロジ図を用意する必要があります。ダイアグラムはAWSそれぞれの製品アイコンAWSサービスを通じて展開される CloudFormation テンプレート。また、ダイアグラムにはサービスのメタデータが含まれている必要があります。公式をダウンロードするにはAWSアーキテクチャアイコン、参照AWS アーキテクチャアイコン

  • 購入者に表示される各テンプレートのインフラストラクチャの料金見積もりは、AWS料金計算ツール。この見積もりには、一般的なデプロイ向けのデフォルト値とともにテンプレートの一部として、デプロイされるサービスのリストが含まれている必要があります。

  • 製品ロードフォームに入力します。AWS Marketplace 管理ポータル から製品ロードフォームを見つけることができます。単一 AMI 製品と複数 AMI 製品には、異なる製品ロードフォームが必要です。製品のロードフォームで、へのパブリック URL を提供します。 CloudFormationテンプレート。 CloudFormation テンプレートは、パブリック URL の形式で送信する必要があります。

  • AWS Marketplace 管理ポータル を使用して、出品を送信します。[Assets (アセット)] から [File upload (ファイルのアップロード)] を選択し、ファイルを添付して、[Upload (アップロード)] を選択します。テンプレートとメタデータを受け取ると、AWS はリクエストの処理を開始します。

出品情報を送信すると、AWS Marketplace は製品ロードフォームを確認して検証します。また、AWS Marketplace 地域化するAMI とサーバーレスアプリケーション、および AMI とサーバーレスアプリケーション、AWS CloudFormationテンプレートをユーザーに代わって作成します。何らかの問題が発生した場合、AWS Marketplace売り手とカタログ運営チームから E メールで問い合わせがあります。