Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Come AWS SAM vengono caricati i file locali al momento della distribuzione
Quando si distribuisce l'applicazione su Cloud AWS, è AWS CloudFormation necessario che i file locali vengano prima caricati su un AWS servizio accessibile, come Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3). Ciò include i file locali a cui fa riferimento il modello. AWS SAM Per soddisfare questo requisito, AWS SAM CLI esegue le seguenti operazioni quando si utilizza il sam package
comando sam deploy
or:
-
Carica automaticamente i file locali su un AWS servizio accessibile.
-
Aggiorna automaticamente il modello dell'applicazione in modo che faccia riferimento al nuovo percorso del file.
Argomenti
Demo: usa il AWS SAM CLI per caricare il codice della funzione Lambda
In questa demo, inizializziamo l'applicazione Hello World di esempio utilizzando un tipo di pacchetto.zip per la nostra funzione Lambda. Utilizziamo il AWS SAM CLI per caricare automaticamente il codice della nostra funzione Lambda su Amazon S3 e fare riferimento al suo nuovo percorso nel nostro modello di applicazione.
Innanzitutto, sam init
eseguiamo l'inizializzazione della nostra applicazione Hello World.
$
sam init
... Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice:1
Choose an AWS Quick Start application template 1 - Hello World Example 2 - Multi-step workflow ... Template:1
Use the most popular runtime and package type? (Python and zip) [y/N]:y
Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]:ENTER
Would you like to enable monitoring using CloudWatch Application Insights? For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]:ENTER
Project name [sam-app]:demo
----------------------- Generating application: ----------------------- Name: demo Runtime: python3.9 Architectures: x86_64 Dependency Manager: pip Application Template: hello-world Output Directory: . Configuration file: demo/samconfig.toml ...
Il nostro codice di funzione Lambda è organizzato nella hello_world
sottodirectory del nostro progetto.
demo ├── README.md ├── hello_world │ ├── __init__.py │ ├── app.py │ └── requirements.txt ├── template.yaml └── tests
All'interno AWS SAM del nostro modello, facciamo riferimento al percorso locale del nostro codice di funzione Lambda utilizzando la CodeUri
proprietà.
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: HelloWorldFunction: Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.9 ...
Successivamente, sam build
eseguiamo la creazione della nostra applicazione e ci prepariamo per la distribuzione.
$
sam build
Starting Build use cache Manifest file is changed (new hash: 3298f13049d19cffaa37ca931dd4d421) or dependency folder (.aws-sam/deps/7896875f-9bcc-4350-8adb-2c1d543627a1) is missing for (HelloWorldFunction), downloading dependencies and copying/building source Building codeuri: /Users/.../demo/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction Running PythonPipBuilder:CleanUp Running PythonPipBuilder:ResolveDependencies Running PythonPipBuilder:CopySource Running PythonPipBuilder:CopySource Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml ...
Successivamente, corriamo sam deploy --guided
per distribuire la nostra applicazione.
$
sam deploy --guided
Configuring SAM deploy ====================== Looking for config file [samconfig.toml] : Found Reading default arguments : Success Setting default arguments for 'sam deploy' ========================================= Stack Name [demo]:ENTER
AWS Region [us-west-2]:ENTER
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [Y/n]:n
#SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]:ENTER
#Preserves the state of previously provisioned resources when an operation fails Disable rollback [y/N]:ENTER
HelloWorldFunction may not have authorization defined, Is this okay? [y/N]:y
Save arguments to configuration file [Y/n]:ENTER
SAM configuration file [samconfig.toml]:ENTER
SAM configuration environment [default]:ENTER
Looking for resources needed for deployment: ... Saved arguments to config file Running 'sam deploy' for future deployments will use the parameters saved above. The above parameters can be changed by modifying samconfig.toml Learn more about samconfig.toml syntax at https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html File with same data already exists at demo/da3c598813f1c2151579b73ad788cac8, skipping upload Deploying with following values =============================== Stack name : demo Region : us-west-2 Confirm changeset : False Disable rollback : False Deployment s3 bucket : aws-sam-cli-managed-default-samcliamzn-s3-demo-source-bucket-1a4x26zbcdkqr Capabilities : ["CAPABILITY_IAM"] Parameter overrides : {} Signing Profiles : {} Initiating deployment ===================== ... Waiting for changeset to be created.. CloudFormation stack changeset ------------------------------------------------------------------------------------------------- Operation LogicalResourceId ResourceType Replacement ------------------------------------------------------------------------------------------------- + Add HelloWorldFunctionHell AWS::Lambda::Permissio N/A oWorldPermissionProd n + Add HelloWorldFunctionRole AWS::IAM::Role N/A ... ------------------------------------------------------------------------------------------------- Changeset created successfully. arn:aws:cloudformation:us-west-2:012345678910:changeSet/samcli-deploy1680906292/1164338d-72e7-4593-a372-f2b3e67f542f 2023-04-07 12:24:58 - Waiting for stack create/update to complete CloudFormation events from stack operations (refresh every 5.0 seconds) ------------------------------------------------------------------------------------------------- ResourceStatus ResourceType LogicalResourceId ResourceStatusReason ------------------------------------------------------------------------------------------------- CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole - CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole Resource creation Initiated ... ------------------------------------------------------------------------------------------------- CloudFormation outputs from deployed stack ------------------------------------------------------------------------------------------------- Outputs ------------------------------------------------------------------------------------------------- Key HelloWorldFunctionIamRole Description Implicit IAM Role created for Hello World function Value arn:aws:iam::012345678910:role/demo-HelloWorldFunctionRole-VQ4CU7UY7S2K Key HelloWorldApi Description API Gateway endpoint URL for Prod stage for Hello World function Value https://satnon55e9.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:demo- HelloWorldFunction-G14inKTmSQvK ------------------------------------------------------------------------------------------------- Successfully created/updated stack - demo in us-west-2
Durante la distribuzione, AWS SAM CLI carica automaticamente il nostro codice di funzione Lambda su Amazon S3 e aggiorna il nostro modello. Il nostro modello modificato nella AWS CloudFormation console riflette il percorso del bucket Amazon S3.
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: s3://aws-sam-cli-managed-default-samcliamzn-s3-demo-source-bucket-1a4x26zbcdkqr/demo/da3c598813f1c2151579b73ad788cac8 Handler: app.lambda_handler ...
Casi di utilizzo supportati
La AWS SAM CLI può facilitare automaticamente questo processo per diversi tipi di file, tipi di AWS CloudFormation risorse e AWS CloudFormation macro.
tipi di file
File dell'applicazione e Docker le immagini sono supportate.
AWS CloudFormation tipi di risorse
Di seguito è riportato un elenco dei tipi di risorse supportati e delle relative proprietà:
Risorsa | Proprietà |
---|---|
AWS::ApiGateway::RestApi |
BodyS3Location |
AWS::ApiGatewayV2::Api |
BodyS3Location |
AWS::AppSync:FunctionConfiguration |
|
AWS::AppSync::GraphQLSchema |
DefinitionS3Location |
AWS::AppSync::Resolver |
|
AWS::CloudFormation::ModuleVersion |
ModulePackage |
AWS::CloudFormation::ResourceVersion |
SchemaHandlerPackage |
AWS::ECR::Repository |
RepositoryName |
AWS::ElasticBeanstalk::ApplicationVersion |
SourceBundle |
AWS::Glue::Job |
Command.ScriptLocation |
AWS::Lambda::Function |
|
AWS::Lambda::LayerVersion |
Content |
AWS::Serverless::Api |
DefinitionUri |
AWS::Serverless::Function |
|
AWS::Serverless::GraphQLApi |
|
AWS::Serverless::HttpApi |
DefinitionUri |
AWS::Serverless::LayerVersion |
ContentUri |
AWS::Serverless::StateMachine |
DefinitionUri |
AWS::StepFunctions::StateMachine |
DefinitionS3Location |
AWS CloudFormation macro
I file a cui si fa riferimento utilizzando la macro di AWS::Include
trasformazione sono supportati.
Ulteriori informazioni
Per ulteriori informazioni sulla AWS::Include
trasformazione, consulta la sezione AWS::Include Transform nella Guida AWS CloudFormation per l'utente.
Per vedere un esempio di utilizzo della AWS::Include
trasformazione in un AWS SAM modello, consulta il pattern API Gateway HTTP API to SQS