Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pengantar penggunaan sam sync untuk menyinkronkan ke AWS Cloud
Antarmuka Baris AWS Serverless Application Model Perintah (AWS SAM CLI) sam sync
perintah menyediakan opsi untuk dengan cepat menyinkronkan perubahan aplikasi lokal ke file AWS Cloud. Gunakan sam sync
saat mengembangkan aplikasi Anda untuk:
-
Secara otomatis mendeteksi dan menyinkronkan perubahan lokal ke file AWS Cloud.
-
Sesuaikan perubahan lokal apa yang disinkronkan ke file. AWS Cloud
-
Siapkan aplikasi Anda di cloud untuk pengujian dan validasi.
Dengansam sync
, Anda dapat membuat alur kerja pengembangan cepat yang mempersingkat waktu yang diperlukan untuk menyinkronkan perubahan lokal Anda ke cloud untuk pengujian dan validasi.
catatan
sam sync
Perintah ini direkomendasikan untuk lingkungan pengembangan. Untuk lingkungan produksi, sebaiknya gunakan sam deploy
atau konfigurasi pipeline continuous integration and delivery (CI/CD). Untuk mempelajari selengkapnya, lihat Menyebarkan aplikasi dan sumber daya Anda dengan AWS SAM.
sam sync
Perintah adalah bagian dari AWS SAM Accelerate. AWS SAM Acceleratemenyediakan alat yang dapat Anda gunakan untuk mempercepat pengalaman mengembangkan dan menguji aplikasi tanpa server di aplikasi. AWS Cloud
Topik
Secara otomatis mendeteksi dan menyinkronkan perubahan lokal ke AWS Cloud
Jalankan sam sync
dengan --watch
opsi untuk mulai menyinkronkan aplikasi Anda ke file. AWS Cloud Ini melakukan hal berikut:
-
Membangun aplikasi Anda — Proses ini mirip dengan menggunakan
sam build
perintah. -
Menyebarkan aplikasi Anda — The AWS SAM CLI menyebarkan aplikasi Anda untuk AWS CloudFormation menggunakan pengaturan default Anda. Nilai default berikut digunakan:
-
AWS kredensi dan pengaturan konfigurasi umum yang ditemukan di folder
.aws
pengguna Anda. -
Pengaturan penerapan aplikasi ditemukan di
samconfig.toml
file aplikasi Anda.
Jika nilai default tidak dapat ditemukan, AWS SAM CLI akan memberi tahu Anda dan keluar dari proses sinkronisasi.
-
-
Perhatikan perubahan lokal — The AWS SAM CLI tetap berjalan dan mengawasi perubahan lokal pada aplikasi Anda. Inilah yang disediakan
--watch
opsi.Opsi ini dapat dihidupkan secara default. Untuk nilai default, lihat
samconfig.toml
file aplikasi Anda. Berikut ini adalah file contoh:... [default.sync] [default.sync.parameters] watch = true ...
-
Sinkronkan perubahan lokal ke AWS Cloud — Saat Anda membuat perubahan lokal, AWS SAM CLI mendeteksi dan menyinkronkan perubahan tersebut ke AWS Cloud melalui metode tercepat yang tersedia. Tergantung pada jenis perubahan, berikut ini dapat terjadi:
-
Jika sumber daya Anda yang diperbarui mendukung AWS layananAPIs, AWS SAM CLI akan menggunakannya untuk menyebarkan perubahan Anda. Ini menghasilkan sinkronisasi cepat untuk memperbarui sumber daya Anda di AWS Cloud.
-
Jika sumber daya yang diperbarui tidak mendukung AWS layananAPIs, AWS SAM CLI akan melakukan AWS CloudFormation penyebaran. Ini memperbarui seluruh aplikasi Anda di AWS Cloud. Meskipun tidak secepat itu, itu mencegah Anda dari keharusan memulai penerapan secara manual.
-
Karena sam sync
perintah secara otomatis memperbarui aplikasi Anda di AWS Cloud, disarankan untuk lingkungan pengembangan saja. Ketika Anda berlarisam sync
, Anda akan diminta untuk mengkonfirmasi:
**The sync command should only be used against a development stack**.
Confirm that you are synchronizing a development stack.
Enter Y to proceed with the command, or enter N to cancel:
[Y/n]: ENTER
Kustomisasi perubahan lokal apa yang disinkronkan ke AWS Cloud
Berikan opsi untuk menyesuaikan perubahan lokal apa yang disinkronkan ke. AWS Cloud Ini dapat mempercepat waktu yang diperlukan untuk melihat perubahan lokal Anda di cloud untuk pengujian dan validasi.
Misalnya, berikan --code
opsi untuk menyinkronkan hanya perubahan kode, seperti kode AWS Lambda fungsi. Selama pengembangan, jika Anda berfokus secara khusus pada kode Lambda, ini akan membuat perubahan Anda ke cloud dengan cepat untuk pengujian dan validasi. Berikut adalah contohnya:
$
sam sync --code --watch
Untuk menyinkronkan hanya perubahan kode untuk fungsi atau lapisan Lambda tertentu, gunakan opsi. --resource-id
Berikut adalah contohnya:
$
sam sync --code --resource-id
HelloWorldFunction
--resource-idHelloWorldLayer
Siapkan aplikasi Anda di cloud untuk pengujian dan validasi
sam sync
Perintah secara otomatis menemukan metode tercepat yang tersedia untuk memperbarui aplikasi Anda di file. AWS Cloud Ini dapat mempercepat alur kerja pengembangan dan pengujian cloud Anda. Dengan memanfaatkan AWS layananAPIs, Anda dapat dengan cepat mengembangkan, menyinkronkan, dan menguji sumber daya yang didukung. Untuk contoh langsung, lihat Modul 6 - AWS SAM Mempercepat
Opsi untuk perintah sinkronisasi sam
Berikut ini adalah beberapa opsi utama yang dapat Anda gunakan untuk memodifikasi sam sync
perintah. Untuk daftar semua opsi, lihatsam sync.
Lakukan penerapan satu kali AWS CloudFormation
Gunakan --no-watch
opsi untuk mematikan sinkronisasi otomatis. Berikut adalah contohnya:
$
sam sync --no-watch
The AWS SAM CLI akan melakukan AWS CloudFormation penyebaran satu kali. Perintah ini mengelompokkan tindakan yang dilakukan oleh sam build
dan sam deploy
perintah.
Lewati AWS CloudFormation penerapan awal
Anda dapat menyesuaikan apakah AWS CloudFormation penerapan diperlukan setiap kali sam sync
dijalankan.
-
Menyediakan
--no-skip-deploy-sync
untuk memerlukan AWS CloudFormation penerapan setiap kalisam sync
dijalankan. Ini memastikan bahwa infrastruktur lokal Anda disinkronkan AWS CloudFormation, mencegah penyimpangan. Menggunakan opsi ini memang menambah waktu tambahan untuk alur kerja pengembangan dan pengujian Anda. -
Menyediakan
--skip-deploy-sync
untuk membuat AWS CloudFormation penyebaran opsional. The AWS SAM CLI akan membandingkan AWS SAM template lokal Anda dengan AWS CloudFormation template yang Anda gunakan dan akan melewatkan AWS CloudFormation penerapan awal jika perubahan tidak terdeteksi. Melewatkan AWS CloudFormation penerapan dapat menghemat waktu Anda saat menyinkronkan perubahan lokal ke file. AWS CloudJika tidak ada perubahan yang terdeteksi, AWS SAM CLI masih akan melakukan AWS CloudFormation penerapan dalam skenario berikut:
-
Jika sudah 7 hari atau lebih sejak AWS CloudFormation penerapan terakhir Anda.
-
Jika sejumlah besar perubahan kode fungsi Lambda terdeteksi, menjadikan AWS CloudFormation penerapan metode tercepat untuk memperbarui aplikasi Anda.
-
Berikut adalah contohnya:
$
sam sync --skip-deploy-sync
Sinkronkan sumber daya dari tumpukan bersarang
Untuk menyinkronkan sumber daya dari tumpukan bersarang
-
Berikan tumpukan root menggunakan
--stack-name
. -
Identifikasi sumber daya dalam tumpukan bersarang menggunakan format berikut:
.nestedStackId/resourceId
-
Berikan sumber daya di tumpukan bersarang menggunakan
--resource-id
.Berikut adalah contohnya:
$
sam sync --code --stack-name
sam-app
--resource-idmyNestedStack/HelloWorldFunction
Untuk informasi selengkapnya tentang membuat aplikasi bersarang, lihatGunakan kembali kode dan sumber daya menggunakan aplikasi bersarang di AWS SAM.
Tentukan AWS CloudFormation tumpukan tertentu untuk diperbarui
Untuk menentukan AWS CloudFormation tumpukan tertentu untuk diperbarui, berikan --stack-name
opsi. Berikut adalah contohnya:
$
sam sync --stack-name
dev-sam-app
Mempercepat waktu pembuatan dengan membangun proyek Anda di folder sumber
Untuk runtime dan metode build yang didukung, Anda dapat menggunakan --build-in-source
opsi untuk membangun proyek secara langsung di folder sumber. Secara default, AWS SAM CLI dibangun di direktori sementara, yang melibatkan penyalinan kode sumber dan file proyek. Dengan--build-in-source
, AWS SAM CLI membangun langsung di folder sumber Anda, yang mempercepat proses pembuatan dengan menghapus kebutuhan untuk menyalin file ke direktori sementara.
Untuk daftar runtime dan metode build yang didukung, lihat
--build-in-source
.
Tentukan file dan folder yang tidak akan memulai sinkronisasi
Gunakan --watch-exclude
opsi untuk menentukan file atau folder apa pun yang tidak akan memulai sinkronisasi saat diperbarui. Untuk informasi selengkapnya tentang metrik ini, lihat --watch-exclude
.
Berikut ini adalah contoh yang mengecualikan package-lock.json
file yang terkait dengan HelloWorldFunction
fungsi kami:
$
sam sync --watch --watch-exclude
HelloWorldFunction=package-lock.json
Ketika perintah ini dijalankan, AWS SAM CLI akan memulai proses sinkronisasi. Ini termasuk yang berikut:
-
Jalankan
sam build
untuk membangun fungsi Anda dan mempersiapkan aplikasi Anda untuk penerapan. -
Jalankan
sam deploy
untuk menyebarkan aplikasi Anda. -
Perhatikan perubahan pada aplikasi Anda.
Saat kami memodifikasi package-lock.json
file, AWS SAM CLI tidak akan memulai sinkronisasi. Ketika file lain diperbarui, AWS SAM CLI akan memulai sinkronisasi, yang akan menyertakan package-lock.json
file.
Berikut ini adalah contoh menentukan fungsi Lambda dari tumpukan anak:
$
sam sync --watch --watch-exclude
ChildStackA/MyFunction=database.sqlite3
Pemecahan Masalah
Untuk memecahkan masalah AWS SAM CLI, lihat AWS SAMCLIpemecahan masalah.
Contoh
Menggunakan sam sync untuk memperbarui aplikasi Hello World
Dalam contoh ini, kita mulai dengan menginisialisasi contoh aplikasi Hello World. Untuk mempelajari lebih lanjut tentang aplikasi ini, lihatTutorial: Menyebarkan aplikasi Hello World dengan AWS SAM.
Menjalankan sam sync
memulai proses build dan deployment.
$
sam sync
The SAM CLI will use the AWS Lambda, Amazon API Gateway, and AWS StepFunctions APIs to upload your code without performing a CloudFormation deployment. This will cause drift in your CloudFormation stack. **The sync command should only be used against a development stack**. Confirm that you are synchronizing a development stack. Enter Y to proceed with the command, or enter N to cancel: [Y/n]: Queued infra sync. Waiting for in progress code syncs to complete... Starting infra sync. Manifest file is changed (new hash: 3298f13049d19cffaa37ca931dd4d421) or dependency folder (.aws-sam/deps/0663e6fe-a888-4efb-b908-e2344261e9c7) is missing for (HelloWorldFunction), downloading dependencies and copying/building source Building codeuri: /Users/.../Demo/sync/sam-app/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction Running PythonPipBuilder:CleanUp Running PythonPipBuilder:ResolveDependencies Running PythonPipBuilder:CopySource Build Succeeded Successfully packaged artifacts and wrote output template to file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpx_5t4u3f. Execute the following command to deploy the packaged template sam deploy --template-file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpx_5t4u3f --stack-name <YOUR STACK NAME> Deploying with following values =============================== Stack name : sam-app Region : us-west-2 Disable rollback : False Deployment s3 bucket : aws-sam-cli-managed-default-samcliamzn-s3-demo-bucket-1a4x26zbcdkqr Capabilities : ["CAPABILITY_NAMED_IAM", "CAPABILITY_AUTO_EXPAND"] Parameter overrides : {} Signing Profiles : null Initiating deployment ===================== 2023-03-17 11:17:19 - Waiting for stack create/update to complete CloudFormation events from stack operations (refresh every 0.5 seconds) --------------------------------------------------------------------------------------------------------------------------------------------- ResourceStatus ResourceType LogicalResourceId ResourceStatusReason --------------------------------------------------------------------------------------------------------------------------------------------- CREATE_IN_PROGRESS AWS::CloudFormation::Stack sam-app Transformation succeeded CREATE_IN_PROGRESS AWS::CloudFormation::Stack AwsSamAutoDependencyLayerNestedSt - ack CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole - CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole Resource creation Initiated CREATE_IN_PROGRESS AWS::CloudFormation::Stack AwsSamAutoDependencyLayerNestedSt Resource creation Initiated ack CREATE_COMPLETE AWS::IAM::Role HelloWorldFunctionRole - CREATE_COMPLETE AWS::CloudFormation::Stack AwsSamAutoDependencyLayerNestedSt - ack CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction - CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction Resource creation Initiated CREATE_COMPLETE AWS::Lambda::Function HelloWorldFunction - CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi - CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi Resource creation Initiated CREATE_COMPLETE AWS::ApiGateway::RestApi ServerlessRestApi - CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d - 5f9d CREATE_IN_PROGRESS AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermi - ssionProd CREATE_IN_PROGRESS AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermi Resource creation Initiated ssionProd CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d Resource creation Initiated 5f9d CREATE_COMPLETE AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d - 5f9d CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage - CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage Resource creation Initiated CREATE_COMPLETE AWS::ApiGateway::Stage ServerlessRestApiProdStage - CREATE_COMPLETE AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermi - ssionProd CREATE_COMPLETE AWS::CloudFormation::Stack sam-app - --------------------------------------------------------------------------------------------------------------------------------------------- CloudFormation outputs from deployed stack ---------------------------------------------------------------------------------------------------------------------------------------------- Outputs ---------------------------------------------------------------------------------------------------------------------------------------------- Key HelloWorldFunctionIamRole Description Implicit IAM Role created for Hello World function Value arn:aws:iam::012345678910:role/sam-app-HelloWorldFunctionRole-BUFVMO2PJIYF Key HelloWorldApi Description API Gateway endpoint URL for Prod stage for Hello World function Value https://pcrx5gdaof.execute-api.us-west-2.amazonaws.com/Prod/hello/ Key HelloWorldFunction Description Hello World Lambda Function ARN Value arn:aws:lambda:us-west-2:012345678910:function:sam-app-HelloWorldFunction-2PlN6TPTQoco ---------------------------------------------------------------------------------------------------------------------------------------------- Stack creation succeeded. Sync infra completed. Infra sync completed. CodeTrigger not created as CodeUri or DefinitionUri is missing for ServerlessRestApi.
Setelah penerapan selesai, kami memodifikasi HelloWorldFunction
kode. The AWS SAM CLI mendeteksi perubahan ini dan menyinkronkan aplikasi kita ke file. AWS Cloud Sejak AWS Lambda mendukung AWS layananAPIs, sinkronisasi cepat dilakukan.
Syncing Lambda Function HelloWorldFunction...
Manifest is not changed for (HelloWorldFunction), running incremental build
Building codeuri: /Users/.../Demo/sync/sam-app/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction
Running PythonPipBuilder:CopySource
Finished syncing Lambda Function HelloWorldFunction.
Selanjutnya, kita memodifikasi API endpoint kita di AWS SAM template aplikasi. Kami berubah /hello
menjadi/helloworld
.
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: HelloWorldFunction: ... Properties: ... Events: HelloWorld: Type: Api Properties: Path:
/helloworld
Method: get
Karena sumber daya Amazon API Gateway tidak mendukung AWS layananAPI, AWS SAM CLI secara otomatis melakukan AWS CloudFormation penyebaran. Berikut ini adalah contoh output:
Queued infra sync. Waiting for in progress code syncs to complete... Starting infra sync. Manifest is not changed for (HelloWorldFunction), running incremental build Building codeuri: /Users/.../Demo/sync/sam-app/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction Running PythonPipBuilder:CopySource Build Succeeded Successfully packaged artifacts and wrote output template to file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpuabo0jb9. Execute the following command to deploy the packaged template sam deploy --template-file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpuabo0jb9 --stack-name <YOUR STACK NAME> Deploying with following values =============================== Stack name : sam-app Region : us-west-2 Disable rollback : False Deployment s3 bucket : aws-sam-cli-managed-default-samcliamzn-s3-demo-bucket-1a4x26zbcdkqr Capabilities : ["CAPABILITY_NAMED_IAM", "CAPABILITY_AUTO_EXPAND"] Parameter overrides : {} Signing Profiles : null Initiating deployment ===================== 2023-03-17 14:41:18 - Waiting for stack create/update to complete CloudFormation events from stack operations (refresh every 0.5 seconds) --------------------------------------------------------------------------------------------------------------------------------------------- ResourceStatus ResourceType LogicalResourceId ResourceStatusReason --------------------------------------------------------------------------------------------------------------------------------------------- UPDATE_IN_PROGRESS AWS::CloudFormation::Stack sam-app Transformation succeeded UPDATE_IN_PROGRESS AWS::CloudFormation::Stack AwsSamAutoDependencyLayerNestedSt - ack UPDATE_COMPLETE AWS::CloudFormation::Stack AwsSamAutoDependencyLayerNestedSt - ack UPDATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi - UPDATE_COMPLETE AWS::ApiGateway::RestApi ServerlessRestApi - CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeployment8cf30e - d3cd UPDATE_IN_PROGRESS AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermi Requested update requires the ssionProd creation of a new physical resource; hence creating one. UPDATE_IN_PROGRESS AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermi Resource creation Initiated ssionProd CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeployment8cf30e Resource creation Initiated d3cd CREATE_COMPLETE AWS::ApiGateway::Deployment ServerlessRestApiDeployment8cf30e - d3cd UPDATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage - UPDATE_COMPLETE AWS::ApiGateway::Stage ServerlessRestApiProdStage - UPDATE_COMPLETE AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermi - ssionProd UPDATE_COMPLETE_CLEANUP_IN_PROGRE AWS::CloudFormation::Stack sam-app - SS DELETE_IN_PROGRESS AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermi - ssionProd DELETE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d - 5f9d DELETE_COMPLETE AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d - 5f9d UPDATE_COMPLETE AWS::CloudFormation::Stack AwsSamAutoDependencyLayerNestedSt - ack DELETE_COMPLETE AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermi - ssionProd UPDATE_COMPLETE AWS::CloudFormation::Stack sam-app - --------------------------------------------------------------------------------------------------------------------------------------------- CloudFormation outputs from deployed stack ---------------------------------------------------------------------------------------------------------------------------------------------- Outputs ---------------------------------------------------------------------------------------------------------------------------------------------- Key HelloWorldFunctionIamRole Description Implicit IAM Role created for Hello World function Value arn:aws:iam::012345678910:role/sam-app-HelloWorldFunctionRole-BUFVMO2PJIYF Key HelloWorldApi Description API Gateway endpoint URL for Prod stage for Hello World function Value https://pcrx5gdaof.execute-api.us-west-2.amazonaws.com/Prod/hello/ Key HelloWorldFunction Description Hello World Lambda Function ARN Value arn:aws:lambda:us-west-2:012345678910:function:sam-app-HelloWorldFunction-2PlN6TPTQoco ---------------------------------------------------------------------------------------------------------------------------------------------- Stack update succeeded. Sync infra completed. Infra sync completed.
Pelajari selengkapnya
Untuk deskripsi semua sam sync
opsi, lihatsam sync.