Menambahkan komponen aplikasi tanpa server - AWS Marketplace

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menambahkan komponen aplikasi tanpa server

Anda dapat membuat produk yang menyertakan satu atau beberapa Amazon Machine Images (AMI), dikirimkan menggunakan satu atau beberapa AWS CloudFormation templat, dengan komponen tanpa server yang dimasukkan ke dalam produk. Misalnya, buat produk dengan satu AMI yang dikonfigurasi sebagai server pengontrol dan AMI lain yang dikonfigurasi sebagai server pekerja, dikirimkan sebagai AWS CloudFormation tumpukan. AWS CloudFormation Template yang digunakan untuk membuat tumpukan dapat menyertakan definisi untuk mengatur AWS Lambda fungsi yang dipicu oleh peristiwa di salah satu server.

Bila Anda menggunakan pendekatan ini untuk merancang produk Anda, Anda dapat menyederhanakan arsitektur dan memudahkan pembeli Anda untuk memulai. Pendekatan ini juga dapat membuat lebih mudah bagi Anda untuk memperbarui produk Anda.

Untuk informasi selengkapnya tentang cara membuat AMIS untuk produk Anda, lihatProduk berbasis AMI. Untuk informasi tentang melengkapi AWS CloudFormation template untuk produk Anda, lihatPengiriman berbasis AMI menggunakan AWS CloudFormation.

Ketika Anda mendefinisikan aplikasi tanpa server Anda, Anda menggunakan AWS Serverless Application Model (AWS SAM) template yang Anda simpan di. AWS Serverless Application Repository AWS SAM adalah kerangka kerja sumber terbuka untuk membangun aplikasi tanpa server. Selama penyebaran, AWS SAM mengubah dan memperluas sintaks menjadi AWS Serverless Application Model sintaks. AWS CloudFormation Parameter AWS Serverless Application Repository adalah repositori dikelola untuk aplikasi tanpa server. Hal ini memungkinkan Anda untuk menyimpan dan berbagi aplikasi yang dapat digunakan kembali sehingga pembeli dapat merakit dan men-deploy arsitektur tanpa server. Untuk membuat dan menawarkan tipe produk ini, selesaikan langkah berikut:

AWS Marketplace meninjau dan memvalidasi produk Anda sebelum listing Anda dibuat. Jika ada masalah yang harus Anda selesaikan sebelum penawaran terdaftar, kami akan mengirimkan pesan email kepada Anda.

Sebagai bagian dari memenuhi langganan, kami menyalin AMI, aplikasi tanpa server, dan AWS CloudFormation templat ke repositori yang AWS Marketplace dimiliki di masing-masing. Wilayah AWS Saat pembeli berlangganan produk Anda, kami memberi mereka akses, dan juga mbucketitahu mereka saat Anda memperbarui perangkat lunak Anda.

Membuat aplikasi tanpa server

Langkah pertama Anda adalah mengemas AWS Lambda fungsi yang digunakan untuk membuat aplikasi tanpa server Anda. Aplikasi Lambda adalah kombinasi dari fungsi Lambda, sumber peristiwa, dan sumber daya lainnya yang bekerja sama untuk melakukan tugas. Sebuah aplikasi serverless dapat sesederhana satu fungsi Lambda atau mengandung beberapa fungsi dengan sumber daya lain, seperti API, basis data, dan pemetaan sumber acara.

Gunakan AWS SAM untuk menentukan model untuk aplikasi tanpa server Anda. Untuk deskripsi nama dan jenis properti, lihat AWS::Serverless::Applicationdi AWS Labs pada GitHub. Berikut ini adalah contoh AWS SAM template dengan fungsi Lambda tunggal dan peran 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"

Publikasikan aplikasi Anda ke repositori

Untuk menerbitkan aplikasi, Anda memuat naik kod aplikasi terlebih dahulu. Simpan artefak kode Anda (misalnya, fungsi Lambda, skrip, file konfigurasi) di bucket Amazon S3 yang dimiliki akun Anda. Ketika Anda mengunggah aplikasi Anda, awalnya disetel ke pribadi, yang berarti bahwa itu hanya tersedia untuk Akun AWS yang membuatnya. Anda harus membuat kebijakan IAM yang memberikan AWS Serverless Application Repository izin untuk mengakses artefak yang Anda unggah.

Untuk mempublikasikan aplikasi tanpa server Anda ke repositori aplikasi tanpa server
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih bucket Amazon S3 yang Anda gunakan untuk mengemas aplikasi Anda.

  3. Pilih tab Izin.

  4. Pilih Kebijakan Bucket.

  5. Salin dan tempel contoh pernyataan kebijakan berikut.

    catatan

    Pernyataan kebijakan contoh akan menghasilkan kesalahan sampai nilai untuk aws:SourceAccount dan Resource diperbarui dalam langkah-langkah berikut.

    { "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. Ganti DOC-EXAMPLE-BUCKET di nilai Resource properti dengan nama bucket untuk bucket Anda.

    2. Ganti 123456789012 dalam elemen dengan ID Anda. Condition Akun AWS ConditionElemen memastikan bahwa AWS Serverless Application Repository hanya memiliki izin untuk mengakses aplikasi dari yang ditentukan Akun AWS.

  6. Pilih Simpan.

  7. Buka AWS Serverless Application Repository konsol dihttps://console.aws.amazon.com/serverlessrepo.

  8. Pada halaman Aplikasi Saya, pilih Publikasikan aplikasi.

  9. Lengkapi bidang yang wajib diisi dan bidang opsional, yang sesuai. Bidang yang wajib diisi:

    • Nama aplikasi

    • Pengarang

    • Deskripsi

    • URL kode sumber

    • Templat SAM

  10. PilihPublikasikan Aplikasi.

Untuk mempublikasikan versi berikutnya dari aplikasi Anda
  1. Buka AWS Serverless Application Repository konsol dihttps://console.aws.amazon.com/serverlessrepo.

  2. Di panel navigasi, dariAplikasi saya, pilih aplikasi.

  3. PilihPublikasikan versi baru.

Untuk informasi selengkapnya, lihat Menerbitkan Aplikasi tanpa server Menggunakan CLI AWS SAM.

Buat CloudFormationtemplat

Untuk membangun CloudFormation template Anda, Anda harus memenuhi prasyarat template dan memberikan input dan parameter keamanan yang diperlukan. Untuk informasi selengkapnya, lihat Anatomi templat di Panduan AWS CloudFormation Pengguna.

Dalam CloudFormation template Anda, Anda dapat mereferensikan aplikasi tanpa server dan AMI Anda. Anda juga dapat menggunakan CloudFormation templat bersarang dan referensi aplikasi tanpa server baik di template root maupun templat bersarang. Untuk mereferensikan aplikasi tanpa server, Anda menggunakan template. AWS SAM Anda dapat secara otomatis membuat AWS SAM template untuk aplikasi Anda dari AWS Serverless Application Repository. Berikut adalah contoh.

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 Template berisi elemen-elemen berikut:

  • ApplicationID— Nama Sumber Daya Amazon (ARN) aplikasi Anda. Informasi ini terletak diAplikasi sayaBagian dari AWS Serverless Application Repository.

  • SemanticVersion— Versi aplikasi tanpa server Anda. Anda dapat menemukan ini dariAplikasi sayaBagian dari AWS Serverless Application Repository.

  • Parameter(opsional) — Parameter aplikasi.

catatan

Untuk ApplicationID danSemanticVersion, fungsi intrinsik tidak didukung. Anda harus hardcode string itu. ApplicationIDIni diperbarui saat dikloning oleh AWS Marketplace.

Jika Anda berencana untuk referensi konfigurasi dan file skrip dalam CloudFormation template Anda, gunakan format berikut. Untuk template bersarang (AWS::Cloudformation::Stack), hanya TemplateURLs tanpa fungsi intrinsik yang didukung. CatatanParameterskonten dalam templat.

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

Kirim CloudFormation template dan file konfigurasi Anda

Untuk mengirimkan file CloudFormation template, konfigurasi, dan skrip, berikan AWS Marketplace izin untuk membaca bucket Amazon S3 tempat file ini disimpan. Untuk melakukannya, memperbarui kebijakan bucket Anda untuk menyertakan izin berikut.

{ "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/*"] } ] }

Perbarui AWS Serverless Application Repository izin aplikasi

Untuk mengirimkan AWS Serverless Application Repository aplikasi Anda AWS Marketplace, Anda harus memberikan AWS Marketplace izin untuk membaca aplikasi Anda. Untuk melakukannya, tambahkan izin ke kebijakan yang terkait dengan aplikasi tanpa server Anda. Ada dua cara untuk memperbarui kebijakan aplikasi Anda:

  • AWS Serverless Application Repository Pilih aplikasi tanpa server Anda dari daftar. PilihPembagiantab, dan pilihBuat Pernyataan. Pada halaman konfigurasi Pernyataan, masukkan prinsip layanan berikutassets.marketplace.amazonaws.com, di bidang Id Akun. Lalu, pilih Simpan.

  • Gunakan AWS CLI perintah berikut untuk memperbarui kebijakan aplikasi Anda.

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

Berbagi AMI Anda

Semua AMI yang dibangun dan diserahkan AWS Marketplace harus mematuhi semua kebijakan produk. Pemindaian AMI swalayan tersedia di. Portal Manajemen AWS Marketplace Dengan fitur ini, Anda dapat memulai pemindaian AMI Anda. Anda menerima hasil pemindaian dengan cepat (biasanya, dalam waktu kurang dari satu jam) dengan umpan balik yang jelas di satu lokasi. Setelah AMI Anda berhasil dipindai, kirimkan AMI untuk diproses oleh tim Operasi AWS Marketplace Penjual dengan mengunggah formulir pemuatan produk Anda.

Kirim CloudFormation produk Anda dengan AMI dan aplikasi tanpa server

Ingatlah hal-hal berikut sebelum Anda mengirimkan produk Anda:

  • Anda harus memberikan diagram arsitektur untuk setiap template. Diagram harus menggunakan ikon AWS produk untuk setiap AWS layanan yang digunakan melalui CloudFormation template. Juga, diagram harus menyertakan metadata untuk layanan. Untuk mengunduh ikon arsitektur AWS resmi kami, lihat Ikon Arsitektur AWS.

  • Prakiraan biaya infrastruktur untuk setiap templat yang ditampilkan kepada pembeli didasarkan pada prakiraan yang Anda berikan dengan menggunakan AWS Kalkulator Harga. Dalam estimasi, sertakan daftar layanan yang akan digunakan sebagai bagian dari template, bersama dengan nilai default untuk penerapan tipikal.

  • Lengkapi formulir beban produk. Anda dapat menemukan formulir beban produk dari Portal Manajemen AWS Marketplace. Formulir beban produk yang berbeda diperlukan untuk produk AMI tunggal dan beberapa produk AMI. Dalam formulir pemuatan produk, Anda akan memberikan URL publik ke CloudFormation template Anda. CloudFormation template harus diserahkan dalam bentuk URL publik.

  • Gunakan Portal Manajemen AWS Marketplace untuk mengirimkan daftar Anda. DariAset, pilihUnggahan file, melampirkan file Anda, kemudian pilihMengunggah. Setelah kami menerima template dan metadata Anda, AWS mulailah memproses permintaan Anda.

Setelah Anda mengirimkan daftar Anda, AWS Marketplace meninjau dan memvalidasi formulir pemuatan produk. Selain itu, AWS Marketplace regionalisasi AMI dan aplikasi tanpa server, dan memperbarui pemetaan regional untuk template Anda atas nama Anda AWS CloudFormation . Jika terjadi masalah, tim Operasi AWS Marketplace Penjual akan menghubungi Anda melalui email.