Packages the local artifacts (local paths) that your AWS CloudFormation template references. The command uploads local artifacts, such as source code for an AWS Lambda function or a Swagger file for an AWS API Gateway REST API, to an S3 bucket. The command returns a copy of your template, replacing references to local artifacts with the S3 location where the command uploaded the artifacts.
Use this command to quickly upload local artifacts that might be required by
your template. After you package your template's artifacts, run the deploy
command to deploy
the returned template.
This command can upload local artifacts specified by following properties of a resource:
BodyS3Location
property for theAWS::ApiGateway::RestApi
resourceCode
property for theAWS::Lambda::Function
resourceCodeUri
property for theAWS::Serverless::Function
resourceDefinitionUri
property for theAWS::Serverless::Api
resourceSourceBundle
property for theAWS::ElasticBeanstalk::ApplicationVersion
resourceTemplateURL
property for theAWS::CloudFormation::Stack
resource
To specify a local artifact in your template, specify a path to a local file or folder, as either an absolute or relative path. The relative path is a location that is relative to your template's location.
For example, if your AWS Lambda function source code is in the
/home/user/code/lambdafunction/
folder, specify
`` CodeUri: /home/user/code/lambdafunction`` for the
AWS::Serverless::Function
resource. The command returns a template and replaces
the local path with the S3 location: CodeUri: s3://mybucket/lambdafunction.zip
.
If you specify a file, the command directly uploads it to the S3 bucket. If you
specify a folder, the command zips the folder and then uploads the .zip file.
For most resources, if you don't specify a path, the command zips and uploads the
current working directory. The exception is AWS::ApiGateway::RestApi
;
if you don't specify a BodyS3Location
, this command will not upload an artifact to S3.
Before the command uploads artifacts, it checks if the artifacts are already
present in the S3 bucket to prevent unnecessary uploads. The command uses MD5
checksums to compare files. If the values match, the command doesn't upload the
artifacts. Use the --force flag
to skip this check and always upload the
artifacts.