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:
Langkah-langkah
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::Application
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
-
Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/
. -
Pilih bucket Amazon S3 yang Anda gunakan untuk mengemas aplikasi Anda.
-
Pilih tab Izin.
-
Pilih Kebijakan Bucket.
-
Salin dan tempel contoh pernyataan kebijakan berikut.
catatan
Pernyataan kebijakan contoh akan menghasilkan kesalahan sampai nilai untuk
aws:SourceAccount
danResource
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
" } } } ] }-
Ganti DOC-EXAMPLE-BUCKET di nilai
Resource
properti dengan nama bucket untuk bucket Anda. -
Ganti
123456789012
dalam elemen dengan ID Anda.Condition
Akun AWSCondition
Elemen memastikan bahwa AWS Serverless Application Repository hanya memiliki izin untuk mengakses aplikasi dari yang ditentukan Akun AWS.
-
-
Pilih Simpan.
-
Buka AWS Serverless Application Repository konsol dihttps://console.aws.amazon.com/serverlessrepo
. -
Pada halaman Aplikasi Saya, pilih Publikasikan aplikasi.
-
Lengkapi bidang yang wajib diisi dan bidang opsional, yang sesuai. Bidang yang wajib diisi:
-
Nama aplikasi
-
Pengarang
-
Deskripsi
-
URL kode sumber
-
Templat SAM
-
-
PilihPublikasikan Aplikasi.
Untuk mempublikasikan versi berikutnya dari aplikasi Anda
-
Buka AWS Serverless Application Repository konsol dihttps://console.aws.amazon.com/serverlessrepo
. -
Di panel navigasi, dariAplikasi saya, pilih aplikasi.
-
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. ApplicationID
Ini 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. CatatanParameters
konten 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 berikut
assets.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-idapplication-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.