Unggah artefak lokal ke bucket S3 dengan AWS CLI - AWS CloudFormation

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

Unggah artefak lokal ke bucket S3 dengan AWS CLI

Anda dapat menggunakan AWS CLI untuk mengunggah artefak lokal yang direferensikan oleh CloudFormation template ke bucket Amazon S3. Artefak lokal adalah file yang Anda referensi dalam template Anda. Alih-alih mengunggah file secara manual ke bucket S3 dan kemudian menambahkan lokasinya ke template Anda, Anda dapat menentukan artefak lokal di template Anda dan menggunakan packageperintah untuk mengunggahnya dengan cepat.

Artefak lokal adalah jalur ke file atau folder yang diunggah package perintah ke Amazon S3. Misalnya, artefak dapat berupa jalur lokal ke kode sumber AWS Lambda fungsi Anda atau file OpenAPI Amazon API Gateway REST API.

Saat menggunakan package perintah:

  • Jika Anda menentukan file, perintah secara langsung mengunggahnya ke bucket S3.

  • Jika Anda menentukan folder, perintah membuat .zip file untuk folder, dan kemudian mengunggah .zip file.

  • Jika Anda tidak menentukan jalur, perintah akan membuat .zip file untuk direktori kerja dan mengunggahnya.

Anda dapat menentukan jalur absolut atau relatif, dimana jalur relatif bersifat relatif untuk lokasi templat Anda.

Setelah mengunggah artifact, perintah menampilkan salinan templat Anda, mengganti referensi ke artifact lokal dengan lokasi S3 tempat perintah mengunggah artifact. Anda kemudian dapat menggunakan template yang dikembalikan untuk membuat atau memperbarui tumpukan.

catatan

Anda dapat menggunakan artifact lokal untuk atribut sumber daya yang didukung perintah package saja. Untuk informasi selengkapnya tentang perintah ini dan daftar properti sumber daya yang didukung, lihat packagedokumentasi di Referensi AWS CLI Perintah.

Prasyarat

Sebelum memulai, Anda harus memiliki bucket Amazon S3 yang ada.

Package dan deploy template dengan artefak lokal

Templat berikut menentukan artifact lokal untuk kode sumber fungsi Lambda. Kode sumber disimpan di /home/user/code/lambdafunction folder.

Template asli

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Resources": { "MyFunction": { "Type": "AWS::Serverless::Function", "Properties": { "Handler": "index.handler", "Runtime": "nodejs18.x", "CodeUri": "/home/user/code/lambdafunction" } } } }

packagePerintah berikut membuat dan mengunggah .zip file folder kode sumber fungsi ke root bucket yang ditentukan.

aws cloudformation package \ --s3-bucket amzn-s3-demo-bucket \ --template /path_to_template/template.json \ --output-template-file packaged-template.json \ --output json

Perintah menghasilkan template baru di jalur yang ditentukan oleh--output-template-file. Ini menggantikan referensi artefak dengan lokasi Amazon S3, seperti yang ditunjukkan di bawah ini. .zipFile diberi nama menggunakan MD5 checksum dari isi folder, daripada menggunakan nama folder itu sendiri.

Template yang dihasilkan

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Resources": { "MyFunction": { "Type": "AWS::Serverless::Function", "Properties": { "Handler": "index.handler", "Runtime": "nodejs18.x", "CodeUri": "s3://amzn-s3-demo-bucket/md5 checksum" } } } }

Setelah Anda mengemas artefak template Anda, gunakan template yang diproses menggunakan perintah. deploy

aws cloudformation deploy \ --template-file packaged-template.json \ --stack-name stack-name

Saat menerapkan template yang lebih besar dari 51.200 byte, gunakan deploy perintah dengan --s3-bucket opsi untuk mengunggah template Anda ke S3, seperti pada contoh berikut.

aws cloudformation deploy \ --template-file packaged-template.json \ --stack-name stack-name \ --s3-bucket amzn-s3-demo-bucket
catatan

Untuk contoh lain menggunakan package perintah untuk mengunggah artefak lokal, lihatPisahkan template menjadi potongan-potongan yang dapat digunakan kembali menggunakan tumpukan bersarang.