Repository: aws/aws-cli

Issue:
Flag --no-fail-on-empty-changeset does not work
I am running into a issue where the --no-fail-on-empty-changeset flag doesn't make a difference. The flag is recognised by the CLI (at least it does not say Unknown option), but it still fails with the error message FAILED. Reason: No updates are to be performed. This issue is on aws cloudformation deploy. Version 1.14.32


Discussion:
Could you provide debug logs by adding the `--debug` flag?

@sanathkr 
```
aws cloudformation deploy --region us-west-2 --stack-name lambda-MyFunction27 --capabilities CAPABILITY_IAM --parameter-overrides Name=MyFunction27 --template-file devops/cloudformation/lambda.yml --no-fail-on-empty-changeset --debug


2018-02-05 13:01:25,126 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/1.14.32 Python/2.7.12 Linux/4.9.58-18.55.amzn1.x86_64 botocore/1.8.36
2018-02-05 13:01:25,126 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['cloudformation', 'deploy', '--region', 'us-west-2', '--stack-name', 'lambda-MyFunction27', '--capabilities', 'CAPABILITY_IAM', '--parameter-overrides', 'Name=MyFunction27', '--template-file', 'devops/cloudformation/lambda.yml', '--no-fail-on-empty-changeset', '--debug']
2018-02-05 13:01:25,126 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function add_scalar_parsers at 0x7fd6e7291e60>
2018-02-05 13:01:25,126 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,126 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function inject_assume_role_provider_cache at 0x7fd6e7e60c08>
2018-02-05 13:01:25,126 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,126 - MainThread - botocore.session - DEBUG - Loading variable credentials_file from defaults.
2018-02-05 13:01:25,126 - MainThread - botocore.session - DEBUG - Loading variable config_file from defaults.
2018-02-05 13:01:25,127 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,127 - MainThread - botocore.session - DEBUG - Loading variable metadata_service_timeout from defaults.
2018-02-05 13:01:25,127 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,127 - MainThread - botocore.session - DEBUG - Loading variable metadata_service_num_attempts from defaults.
2018-02-05 13:01:25,127 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,127 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function attach_history_handler at 0x7fd6ecfe9320>
2018-02-05 13:01:25,127 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,127 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,127 - MainThread - botocore.session - DEBUG - Loading variable api_versions from defaults.
2018-02-05 13:01:25,128 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /usr/local/lib/python2.7/site-packages/botocore-1.8.36-py2.7.egg/botocore/data/cloudformation/2010-05-15/service-2.json
2018-02-05 13:01:25,144 - MainThread - botocore.hooks - DEBUG - Event service-data-loaded.cloudformation: calling handler <function register_retries_for_service at 0x7fd6e8a220c8>
2018-02-05 13:01:25,145 - MainThread - botocore.handlers - DEBUG - Registering retry handlers for service: cloudformation
2018-02-05 13:01:25,146 - MainThread - botocore.hooks - DEBUG - Event building-command-table.cloudformation: calling handler <function inject_commands at 0x7fd6e7748230>
2018-02-05 13:01:25,146 - MainThread - botocore.hooks - DEBUG - Event building-command-table.cloudformation: calling handler <function add_waiters at 0x7fd6e7296f50>
2018-02-05 13:01:25,149 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /usr/local/lib/python2.7/site-packages/botocore-1.8.36-py2.7.egg/botocore/data/cloudformation/2010-05-15/waiters-2.json
2018-02-05 13:01:25,150 - MainThread - botocore.hooks - DEBUG - Event building-command-table.deploy: calling handler <function inject_commands at 0x7fd6e76acc80>
2018-02-05 13:01:25,150 - MainThread - botocore.hooks - DEBUG - Event building-command-table.deploy: calling handler <function add_waiters at 0x7fd6e7296f50>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.anonymous: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.role-arn: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.notification-arns: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.template-file: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event process-cli-arg.custom.deploy: calling handler <awscli.argprocess.ParamShorthandParser object at 0x7fd6e7ebe1d0>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.tags: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event process-cli-arg.custom.deploy: calling handler <awscli.argprocess.ParamShorthandParser object at 0x7fd6e7ebe1d0>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.stack-name: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event process-cli-arg.custom.deploy: calling handler <awscli.argprocess.ParamShorthandParser object at 0x7fd6e7ebe1d0>
2018-02-05 13:01:25,152 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.anonymous: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.s3-bucket: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.kms-key-id: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.capabilities: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event process-cli-arg.custom.deploy: calling handler <awscli.argprocess.ParamShorthandParser object at 0x7fd6e7ebe1d0>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.parameter-overrides: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event process-cli-arg.custom.deploy: calling handler <awscli.argprocess.ParamShorthandParser object at 0x7fd6e7ebe1d0>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.s3-prefix: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.force-upload: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event process-cli-arg.custom.deploy: calling handler <awscli.argprocess.ParamShorthandParser object at 0x7fd6e7ebe1d0>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.custom.deploy.fail-on-empty-changeset: calling handler <function uri_param at 0x7fd6e7ef4668>
2018-02-05 13:01:25,153 - MainThread - botocore.hooks - DEBUG - Event process-cli-arg.custom.deploy: calling handler <awscli.argprocess.ParamShorthandParser object at 0x7fd6e7ebe1d0>
2018-02-05 13:01:25,153 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,153 - MainThread - botocore.session - DEBUG - Loading variable ca_bundle from defaults.
2018-02-05 13:01:25,154 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,154 - MainThread - botocore.session - DEBUG - Loading variable api_versions from defaults.
2018-02-05 13:01:25,154 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: env
2018-02-05 13:01:25,154 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role
2018-02-05 13:01:25,154 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file
2018-02-05 13:01:25,154 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: custom-process
2018-02-05 13:01:25,154 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: config-file
2018-02-05 13:01:25,154 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: ec2-credentials-file
2018-02-05 13:01:25,154 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: boto-config
2018-02-05 13:01:25,154 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: container-role
2018-02-05 13:01:25,154 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: iam-role
2018-02-05 13:01:25,157 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - INFO - Starting new HTTP connection (1): 169.254.169.254
2018-02-05 13:01:25,158 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "GET /latest/meta-data/iam/security-credentials/ HTTP/1.1" 200 32
2018-02-05 13:01:25,159 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - INFO - Starting new HTTP connection (1): 169.254.169.254
2018-02-05 13:01:25,160 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "GET /latest/meta-data/iam/security-credentials/us-west-2-jenkins-client_EC2Role HTTP/1.1" 200 894
2018-02-05 13:01:25,160 - MainThread - botocore.credentials - DEBUG - Found credentials from IAM Role: us-west-2-jenkins-client_EC2Role
2018-02-05 13:01:25,161 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /usr/local/lib/python2.7/site-packages/botocore-1.8.36-py2.7.egg/botocore/data/endpoints.json
2018-02-05 13:01:25,189 - MainThread - botocore.session - DEBUG - Loading variable profile from defaults.
2018-02-05 13:01:25,190 - MainThread - botocore.hooks - DEBUG - Event choose-service-name: calling handler <function handle_service_name_alias at 0x7fd6e8a20848>
2018-02-05 13:01:25,191 - MainThread - botocore.hooks - DEBUG - Event creating-client-class.cloudformation: calling handler <function add_generate_presigned_url at 0x7fd6e8a62d70>
2018-02-05 13:01:25,192 - MainThread - botocore.args - DEBUG - The s3 config key is not a dictionary type, ignoring its value of: None
2018-02-05 13:01:25,195 - MainThread - botocore.endpoint - DEBUG - Setting cloudformation timeout as (60, 60)
2018-02-05 13:01:25,196 - MainThread - botocore.client - DEBUG - Registering retry handlers for service: cloudformation
2018-02-05 13:01:25,201 - MainThread - botocore.hooks - DEBUG - Event before-parameter-build.cloudformation.DescribeStacks: calling handler <function generate_idempotent_uuid at 0x7fd6e8a20aa0>
2018-02-05 13:01:25,201 - MainThread - botocore.endpoint - DEBUG - Making request for OperationModel(name=DescribeStacks) (verify_ssl=True) with params: {'body': {'Action': u'DescribeStacks', 'StackName': u'lambda-MyFunction27', 'Version': u'2010-05-15'}, 'url': u'https://cloudformation.us-west-2.amazonaws.com/', 'headers': {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': 'aws-cli/1.14.32 Python/2.7.12 Linux/4.9.58-18.55.amzn1.x86_64 botocore/1.8.36'}, 'context': {'auth_type': None, 'client_region': u'us-west-2', 'has_streaming_input': False, 'client_config': <botocore.config.Config object at 0x7fd6e6d85d50>}, 'query_string': '', 'url_path': '/', 'method': u'POST'}
2018-02-05 13:01:25,201 - MainThread - botocore.hooks - DEBUG - Event request-created.cloudformation.DescribeStacks: calling handler <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7fd6e6d85cd0>>
2018-02-05 13:01:25,202 - MainThread - botocore.hooks - DEBUG - Event choose-signer.cloudformation.DescribeStacks: calling handler <function set_operation_specific_signer at 0x7fd6e8a209b0>
2018-02-05 13:01:25,202 - MainThread - botocore.auth - DEBUG - Calculating signature using v4 auth.
2018-02-05 13:01:25,202 - MainThread - botocore.auth - DEBUG - CanonicalRequest:
POST
/

content-type:application/x-www-form-urlencoded; charset=utf-8
host:cloudformation.us-west-2.amazonaws.com
x-amz-date:20180205T130125Z
x-amz-security-token:FQoDYXdzEI7//////////wEaDJpASxA/4hbB4bWijiK3Az5vl/8NYta9mCpY80E1CfifffIud0v5QsJpf+YeAGiBI8UqnA+IP+pmXfxRYqzqAQ0MCNCtXyl/yrZDXMjhyHByp/8IgC6BpepjJxM2cqxnOMXvuJ5cAaVzTmZvQ031ykpNIStV5+mj8CkFZVFBd15n7OkSaQANUj01PpYY5JJgid2Qt3FJ1YCTuVSSHFMTfePfkNHwbhLnJ6KmBXYGDYdlWinHTJVzEsARdMJrMu9KHJ62IjoB3G9+F9M9WR+wTIyMaDxYKDfiAQeHfNWwT4cg2yrHViSWkpTceqZKBhQCDgr2fzfTcZbd+po4S3/Xn3PTKELI1Nnyfq4iDREUIhXh/7NAwcpUgxZmnzy9LLWzg5UzTJOXkC3iQdt7AvNbb/jAPaViC60MFqVtx4E6xEMauLCaEwNA5U4fFX9SU7VoPpBYJKhq+QIpLUf0gYHH6ZYXCpCBoCNUU4SoPdiK2u2qn0ZmmcARTTfVTxozas8VbZA4JWjV9JxSe4bTEugjoafhPUGxtPoe1CHQCEgUbiFxQb4bJY7PKp3XEfl/H2XIyCyH3R9YvXrnav/jiPNujpQYTQjYfQAo/qrh0wU=

content-type;host;x-amz-date;x-amz-security-token
be8409c3e97b435464b9b7aa3aa9a939856ca6e9770a74cfc8e3a25d4030c463
2018-02-05 13:01:25,202 - MainThread - botocore.auth - DEBUG - StringToSign:
AWS4-HMAC-SHA256
20180205T130125Z
20180205/us-west-2/cloudformation/aws4_request
03c8384e558c9804f7cf23716db65fc3d863d7bceaeddbe904ddb91a1cfe67bc
2018-02-05 13:01:25,202 - MainThread - botocore.auth - DEBUG - Signature:
fc0d509a16f4267918476d294f7053a2914d9bde8dab17dc47aa3d011a30ef82
2018-02-05 13:01:25,203 - MainThread - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [POST]>
2018-02-05 13:01:25,203 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - INFO - Starting new HTTPS connection (1): cloudformation.us-west-2.amazonaws.com
2018-02-05 13:01:25,266 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "POST / HTTP/1.1" 200 1822
2018-02-05 13:01:25,266 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amzn-requestid': 'abf4eeb8-0a74-11e8-baf1-d1f700e219a2', 'date': 'Mon, 05 Feb 2018 13:01:25 GMT', 'content-length': '1822', 'content-type': 'text/xml'}
2018-02-05 13:01:25,266 - MainThread - botocore.parsers - DEBUG - Response body:
<DescribeStacksResponse xmlns="http://cloudformation.amazonaws.com/doc/2010-05-15/">
  <DescribeStacksResult>
    <Stacks>
      <member>
        <Outputs>
          <member>
            <ExportName>MyFunction27ApiGatewayProxyArn</ExportName>
            <OutputKey>ApiGatewayProxyArn</OutputKey>
            <OutputValue>arn:aws:lambda:us-west-2:975635808270:function:MyFunction27</OutputValue>
          </member>
        </Outputs>
        <Capabilities>
          <member>CAPABILITY_IAM</member>
        </Capabilities>
        <CreationTime>2018-02-02T23:25:36.755Z</CreationTime>
        <NotificationARNs/>
        <StackId>arn:aws:cloudformation:us-west-2:975635808270:stack/lambda-MyFunction27/5f7b8510-0870-11e8-b987-503aca41a0fd</StackId>
        <StackName>lambda-MyFunction27</StackName>
        <Description>Sets up ApiGatewayProxy lambda</Description>
        <StackStatus>CREATE_COMPLETE</StackStatus>
        <DisableRollback>false</DisableRollback>
        <Tags/>
        <RollbackConfiguration/>
        <DriftInformation>
          <StackDriftStatus>NOT_CHECKED</StackDriftStatus>
        </DriftInformation>
        <EnableTerminationProtection>false</EnableTerminationProtection>
        <LastUpdatedTime>2018-02-02T23:25:42.108Z</LastUpdatedTime>
        <Parameters>
          <member>
            <ParameterKey>Name</ParameterKey>
            <ParameterValue>MyFunction27</ParameterValue>
          </member>
        </Parameters>
        <ChangeSetId>arn:aws:cloudformation:us-west-2:975635808270:changeSet/awscli-cloudformation-package-deploy-1517613936/93da5d38-cef3-4f79-9c71-56cdae6b641b</ChangeSetId>
      </member>
    </Stacks>
  </DescribeStacksResult>
  <ResponseMetadata>
    <RequestId>abf4eeb8-0a74-11e8-baf1-d1f700e219a2</RequestId>
  </ResponseMetadata>
</DescribeStacksResponse>

2018-02-05 13:01:25,268 - MainThread - botocore.hooks - DEBUG - Event needs-retry.cloudformation.DescribeStacks: calling handler <botocore.retryhandler.RetryHandler object at 0x7fd6e6facc10>
2018-02-05 13:01:25,268 - MainThread - botocore.retryhandler - DEBUG - No retry needed.
2018-02-05 13:01:25,269 - MainThread - botocore.hooks - DEBUG - Event before-parameter-build.cloudformation.GetTemplateSummary: calling handler <function generate_idempotent_uuid at 0x7fd6e8a20aa0>
2018-02-05 13:01:25,269 - MainThread - botocore.endpoint - DEBUG - Making request for OperationModel(name=GetTemplateSummary) (verify_ssl=True) with params: {'body': {'Action': u'GetTemplateSummary', 'StackName': u'lambda-MyFunction27', 'Version': u'2010-05-15'}, 'url': u'https://cloudformation.us-west-2.amazonaws.com/', 'headers': {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': 'aws-cli/1.14.32 Python/2.7.12 Linux/4.9.58-18.55.amzn1.x86_64 botocore/1.8.36'}, 'context': {'auth_type': None, 'client_region': u'us-west-2', 'has_streaming_input': False, 'client_config': <botocore.config.Config object at 0x7fd6e6d85d50>}, 'query_string': '', 'url_path': '/', 'method': u'POST'}
2018-02-05 13:01:25,269 - MainThread - botocore.hooks - DEBUG - Event request-created.cloudformation.GetTemplateSummary: calling handler <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7fd6e6d85cd0>>
2018-02-05 13:01:25,269 - MainThread - botocore.hooks - DEBUG - Event choose-signer.cloudformation.GetTemplateSummary: calling handler <function set_operation_specific_signer at 0x7fd6e8a209b0>
2018-02-05 13:01:25,270 - MainThread - botocore.auth - DEBUG - Calculating signature using v4 auth.
2018-02-05 13:01:25,270 - MainThread - botocore.auth - DEBUG - CanonicalRequest:
POST
/

content-type:application/x-www-form-urlencoded; charset=utf-8
host:cloudformation.us-west-2.amazonaws.com
x-amz-date:20180205T130125Z
x-amz-security-token:FQoDYXdzEI7//////////wEaDJpASxA/4hbB4bWijiK3Az5vl/8NYta9mCpY80E1CfifffIud0v5QsJpf+YeAGiBI8UqnA+IP+pmXfxRYqzqAQ0MCNCtXyl/yrZDXMjhyHByp/8IgC6BpepjJxM2cqxnOMXvuJ5cAaVzTmZvQ031ykpNIStV5+mj8CkFZVFBd15n7OkSaQANUj01PpYY5JJgid2Qt3FJ1YCTuVSSHFMTfePfkNHwbhLnJ6KmBXYGDYdlWinHTJVzEsARdMJrMu9KHJ62IjoB3G9+F9M9WR+wTIyMaDxYKDfiAQeHfNWwT4cg2yrHViSWkpTceqZKBhQCDgr2fzfTcZbd+po4S3/Xn3PTKELI1Nnyfq4iDREUIhXh/7NAwcpUgxZmnzy9LLWzg5UzTJOXkC3iQdt7AvNbb/jAPaViC60MFqVtx4E6xEMauLCaEwNA5U4fFX9SU7VoPpBYJKhq+QIpLUf0gYHH6ZYXCpCBoCNUU4SoPdiK2u2qn0ZmmcARTTfVTxozas8VbZA4JWjV9JxSe4bTEugjoafhPUGxtPoe1CHQCEgUbiFxQb4bJY7PKp3XEfl/H2XIyCyH3R9YvXrnav/jiPNujpQYTQjYfQAo/qrh0wU=

content-type;host;x-amz-date;x-amz-security-token
36999d379c941073c170adf8f7abb990e23c22bccd829203ff01808f24f94662
2018-02-05 13:01:25,270 - MainThread - botocore.auth - DEBUG - StringToSign:
AWS4-HMAC-SHA256
20180205T130125Z
20180205/us-west-2/cloudformation/aws4_request
7972990258dbe7a8250a12cef2f15a423da8269ed6c4cdede9c81789224ea601
2018-02-05 13:01:25,270 - MainThread - botocore.auth - DEBUG - Signature:
1d9952fe40f68525479d0ecdb15b6450f2ac39a8328bd057fe89dad8828a9006
2018-02-05 13:01:25,270 - MainThread - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [POST]>
2018-02-05 13:01:25,302 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "POST / HTTP/1.1" 200 997
2018-02-05 13:01:25,302 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amzn-requestid': 'abfcddfd-0a74-11e8-baf1-d1f700e219a2', 'date': 'Mon, 05 Feb 2018 13:01:25 GMT', 'content-length': '997', 'content-type': 'text/xml'}
2018-02-05 13:01:25,302 - MainThread - botocore.parsers - DEBUG - Response body:
<GetTemplateSummaryResponse xmlns="http://cloudformation.amazonaws.com/doc/2010-05-15/">
  <GetTemplateSummaryResult>
    <ResourceTypes>
      <member>AWS::IAM::Role</member>
      <member>AWS::Lambda::Function</member>
    </ResourceTypes>
    <Capabilities>
      <member>CAPABILITY_IAM</member>
    </Capabilities>
    <Description>Sets up ApiGatewayProxy lambda</Description>
    <CapabilitiesReason>The following resource(s) require capabilities: [AWS::IAM::Role]</CapabilitiesReason>
    <Version>2010-09-09</Version>
    <Parameters>
      <member>
        <ParameterType>String</ParameterType>
        <ParameterConstraints/>
        <NoEcho>false</NoEcho>
        <DefaultValue>MyFunction</DefaultValue>
        <ParameterKey>Name</ParameterKey>
        <Description>Name</Description>
      </member>
    </Parameters>
  </GetTemplateSummaryResult>
  <ResponseMetadata>
    <RequestId>abfcddfd-0a74-11e8-baf1-d1f700e219a2</RequestId>
  </ResponseMetadata>
</GetTemplateSummaryResponse>

2018-02-05 13:01:25,303 - MainThread - botocore.hooks - DEBUG - Event needs-retry.cloudformation.GetTemplateSummary: calling handler <botocore.retryhandler.RetryHandler object at 0x7fd6e6facc10>
2018-02-05 13:01:25,303 - MainThread - botocore.retryhandler - DEBUG - No retry needed.
2018-02-05 13:01:25,303 - MainThread - botocore.hooks - DEBUG - Event before-parameter-build.cloudformation.CreateChangeSet: calling handler <function generate_idempotent_uuid at 0x7fd6e8a20aa0>
2018-02-05 13:01:25,304 - MainThread - botocore.endpoint - DEBUG - Making request for OperationModel(name=CreateChangeSet) (verify_ssl=True) with params: {'body': {'ChangeSetName': 'awscli-cloudformation-package-deploy-1517835685', 'Parameters.member.1.ParameterKey': 'Name', 'TemplateBody': "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Sets up ApiGatewayProxy lambda\nTransform: AWS::Serverless-2016-10-31\nParameters:\n  Name:\n    Description: Name\n    Type: String \n    Default: MyFunction\nResources:\n  ApiGatewayProxy:\n    Type: AWS::Serverless::Function\n    Properties:\n      FunctionName: !Ref Name\n      Description: Proxy for Api Gateway\n      Handler: index.handler\n      Runtime: nodejs6.10\n      CodeUri: 's3://ezops-lambda/ApiGatewayProxy.zip'\n      MemorySize: 1024\n      Timeout: 60\n      Policies:\n       - 'arn:aws:iam::aws:policy/AdministratorAccess'\nOutputs:\n  ApiGatewayProxyArn:\n    Value: !Sub ${ApiGatewayProxy.Arn}\n    Export:\n      Name: !Sub ${Name}ApiGatewayProxyArn", 'Tags': '', 'StackName': u'lambda-MyFunction27', 'Capabilities.member.1': u'CAPABILITY_IAM', 'Version': u'2010-05-15', 'Action': u'CreateChangeSet', 'Parameters.member.1.ParameterValue': u'MyFunction27', 'ChangeSetType': 'UPDATE', 'Description': 'Created by AWS CLI at 2018-02-05T13:01:25.201378 UTC'}, 'url': u'https://cloudformation.us-west-2.amazonaws.com/', 'headers': {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': 'aws-cli/1.14.32 Python/2.7.12 Linux/4.9.58-18.55.amzn1.x86_64 botocore/1.8.36'}, 'context': {'auth_type': None, 'client_region': u'us-west-2', 'has_streaming_input': False, 'client_config': <botocore.config.Config object at 0x7fd6e6d85d50>}, 'query_string': '', 'url_path': '/', 'method': u'POST'}
2018-02-05 13:01:25,305 - MainThread - botocore.hooks - DEBUG - Event request-created.cloudformation.CreateChangeSet: calling handler <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7fd6e6d85cd0>>
2018-02-05 13:01:25,305 - MainThread - botocore.hooks - DEBUG - Event choose-signer.cloudformation.CreateChangeSet: calling handler <function set_operation_specific_signer at 0x7fd6e8a209b0>
2018-02-05 13:01:25,306 - MainThread - botocore.auth - DEBUG - Calculating signature using v4 auth.
2018-02-05 13:01:25,306 - MainThread - botocore.auth - DEBUG - CanonicalRequest:
POST
/

content-type:application/x-www-form-urlencoded; charset=utf-8
host:cloudformation.us-west-2.amazonaws.com
x-amz-date:20180205T130125Z
x-amz-security-token:FQoDYXdzEI7//////////wEaDJpASxA/4hbB4bWijiK3Az5vl/8NYta9mCpY80E1CfifffIud0v5QsJpf+YeAGiBI8UqnA+IP+pmXfxRYqzqAQ0MCNCtXyl/yrZDXMjhyHByp/8IgC6BpepjJxM2cqxnOMXvuJ5cAaVzTmZvQ031ykpNIStV5+mj8CkFZVFBd15n7OkSaQANUj01PpYY5JJgid2Qt3FJ1YCTuVSSHFMTfePfkNHwbhLnJ6KmBXYGDYdlWinHTJVzEsARdMJrMu9KHJ62IjoB3G9+F9M9WR+wTIyMaDxYKDfiAQeHfNWwT4cg2yrHViSWkpTceqZKBhQCDgr2fzfTcZbd+po4S3/Xn3PTKELI1Nnyfq4iDREUIhXh/7NAwcpUgxZmnzy9LLWzg5UzTJOXkC3iQdt7AvNbb/jAPaViC60MFqVtx4E6xEMauLCaEwNA5U4fFX9SU7VoPpBYJKhq+QIpLUf0gYHH6ZYXCpCBoCNUU4SoPdiK2u2qn0ZmmcARTTfVTxozas8VbZA4JWjV9JxSe4bTEugjoafhPUGxtPoe1CHQCEgUbiFxQb4bJY7PKp3XEfl/H2XIyCyH3R9YvXrnav/jiPNujpQYTQjYfQAo/qrh0wU=

content-type;host;x-amz-date;x-amz-security-token
526c0505a6a7b13eb21f239a7c3e174565cb84b82153173fedbbaa0e8fffe5a4
2018-02-05 13:01:25,306 - MainThread - botocore.auth - DEBUG - StringToSign:
AWS4-HMAC-SHA256
20180205T130125Z
20180205/us-west-2/cloudformation/aws4_request
c8ee95587d34a85f809b7daa99e847464935f830c0457bb95e2b72d67904e005
2018-02-05 13:01:25,306 - MainThread - botocore.auth - DEBUG - Signature:
64ccd499bebe39256964b0209725a231d7b02ff3bc49c622637165bee5f72bc6
2018-02-05 13:01:25,306 - MainThread - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [POST]>
2018-02-05 13:01:25,601 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "POST / HTTP/1.1" 200 559
2018-02-05 13:01:25,602 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amzn-requestid': 'ac025c40-0a74-11e8-baf1-d1f700e219a2', 'date': 'Mon, 05 Feb 2018 13:01:25 GMT', 'content-length': '559', 'content-type': 'text/xml'}
2018-02-05 13:01:25,602 - MainThread - botocore.parsers - DEBUG - Response body:
<CreateChangeSetResponse xmlns="http://cloudformation.amazonaws.com/doc/2010-05-15/">
  <CreateChangeSetResult>
    <StackId>arn:aws:cloudformation:us-west-2:975635808270:stack/lambda-MyFunction27/5f7b8510-0870-11e8-b987-503aca41a0fd</StackId>
    <Id>arn:aws:cloudformation:us-west-2:975635808270:changeSet/awscli-cloudformation-package-deploy-1517835685/6970f2b6-84fc-435b-816f-5c9e8585a57c</Id>
  </CreateChangeSetResult>
  <ResponseMetadata>
    <RequestId>ac025c40-0a74-11e8-baf1-d1f700e219a2</RequestId>
  </ResponseMetadata>
</CreateChangeSetResponse>

2018-02-05 13:01:25,602 - MainThread - botocore.hooks - DEBUG - Event needs-retry.cloudformation.CreateChangeSet: calling handler <botocore.retryhandler.RetryHandler object at 0x7fd6e6facc10>
2018-02-05 13:01:25,603 - MainThread - botocore.retryhandler - DEBUG - No retry needed.

Waiting for changeset to be created..
2018-02-05 13:01:25,603 - MainThread - botocore.hooks - DEBUG - Event before-parameter-build.cloudformation.DescribeChangeSet: calling handler <function generate_idempotent_uuid at 0x7fd6e8a20aa0>
2018-02-05 13:01:25,603 - MainThread - botocore.endpoint - DEBUG - Making request for OperationModel(name=DescribeChangeSet) (verify_ssl=True) with params: {'body': {'Action': u'DescribeChangeSet', 'StackName': u'lambda-MyFunction27', 'Version': u'2010-05-15', 'ChangeSetName': 'arn:aws:cloudformation:us-west-2:975635808270:changeSet/awscli-cloudformation-package-deploy-1517835685/6970f2b6-84fc-435b-816f-5c9e8585a57c'}, 'url': u'https://cloudformation.us-west-2.amazonaws.com/', 'headers': {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': 'aws-cli/1.14.32 Python/2.7.12 Linux/4.9.58-18.55.amzn1.x86_64 botocore/1.8.36'}, 'context': {'auth_type': None, 'client_region': u'us-west-2', 'has_streaming_input': False, 'client_config': <botocore.config.Config object at 0x7fd6e6d85d50>}, 'query_string': '', 'url_path': '/', 'method': u'POST'}
2018-02-05 13:01:25,604 - MainThread - botocore.hooks - DEBUG - Event request-created.cloudformation.DescribeChangeSet: calling handler <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7fd6e6d85cd0>>
2018-02-05 13:01:25,604 - MainThread - botocore.hooks - DEBUG - Event choose-signer.cloudformation.DescribeChangeSet: calling handler <function set_operation_specific_signer at 0x7fd6e8a209b0>
2018-02-05 13:01:25,604 - MainThread - botocore.auth - DEBUG - Calculating signature using v4 auth.
2018-02-05 13:01:25,604 - MainThread - botocore.auth - DEBUG - CanonicalRequest:
POST
/

content-type:application/x-www-form-urlencoded; charset=utf-8
host:cloudformation.us-west-2.amazonaws.com
x-amz-date:20180205T130125Z
x-amz-security-token:FQoDYXdzEI7//////////wEaDJpASxA/4hbB4bWijiK3Az5vl/8NYta9mCpY80E1CfifffIud0v5QsJpf+YeAGiBI8UqnA+IP+pmXfxRYqzqAQ0MCNCtXyl/yrZDXMjhyHByp/8IgC6BpepjJxM2cqxnOMXvuJ5cAaVzTmZvQ031ykpNIStV5+mj8CkFZVFBd15n7OkSaQANUj01PpYY5JJgid2Qt3FJ1YCTuVSSHFMTfePfkNHwbhLnJ6KmBXYGDYdlWinHTJVzEsARdMJrMu9KHJ62IjoB3G9+F9M9WR+wTIyMaDxYKDfiAQeHfNWwT4cg2yrHViSWkpTceqZKBhQCDgr2fzfTcZbd+po4S3/Xn3PTKELI1Nnyfq4iDREUIhXh/7NAwcpUgxZmnzy9LLWzg5UzTJOXkC3iQdt7AvNbb/jAPaViC60MFqVtx4E6xEMauLCaEwNA5U4fFX9SU7VoPpBYJKhq+QIpLUf0gYHH6ZYXCpCBoCNUU4SoPdiK2u2qn0ZmmcARTTfVTxozas8VbZA4JWjV9JxSe4bTEugjoafhPUGxtPoe1CHQCEgUbiFxQb4bJY7PKp3XEfl/H2XIyCyH3R9YvXrnav/jiPNujpQYTQjYfQAo/qrh0wU=

content-type;host;x-amz-date;x-amz-security-token
16b42f4ad1ebeef5c8a063bd319743531d3b97f6868aeeda6d28a2ede28df7c1
2018-02-05 13:01:25,604 - MainThread - botocore.auth - DEBUG - StringToSign:
AWS4-HMAC-SHA256
20180205T130125Z
20180205/us-west-2/cloudformation/aws4_request
c52f41a8f14d5a36320531115f4e84d31777e8c477c5733ddc879961b2779784
2018-02-05 13:01:25,605 - MainThread - botocore.auth - DEBUG - Signature:
bf8fa86306d404e7ea5d5c024f4712d876337e49c1c0107010bb0057f28505f8
2018-02-05 13:01:25,605 - MainThread - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [POST]>
2018-02-05 13:01:25,670 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "POST / HTTP/1.1" 200 1251
2018-02-05 13:01:25,671 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amzn-requestid': 'ac2ffbfc-0a74-11e8-baf1-d1f700e219a2', 'date': 'Mon, 05 Feb 2018 13:01:25 GMT', 'content-length': '1251', 'content-type': 'text/xml'}
2018-02-05 13:01:25,671 - MainThread - botocore.parsers - DEBUG - Response body:
<DescribeChangeSetResponse xmlns="http://cloudformation.amazonaws.com/doc/2010-05-15/">
  <DescribeChangeSetResult>
    <Capabilities>
      <member>CAPABILITY_IAM</member>
    </Capabilities>
    <CreationTime>2018-02-05T13:01:25.550Z</CreationTime>
    <NotificationARNs/>
    <StackId>arn:aws:cloudformation:us-west-2:975635808270:stack/lambda-MyFunction27/5f7b8510-0870-11e8-b987-503aca41a0fd</StackId>
    <ExecutionStatus>UNAVAILABLE</ExecutionStatus>
    <StackName>lambda-MyFunction27</StackName>
    <Changes/>
    <Description>Created by AWS CLI at 2018-02-05T13:01:25.201378 UTC</Description>
    <ChangeSetName>awscli-cloudformation-package-deploy-1517835685</ChangeSetName>
    <RollbackConfiguration/>
    <Parameters>
      <member>
        <ParameterKey>Name</ParameterKey>
        <ParameterValue>MyFunction27</ParameterValue>
      </member>
    </Parameters>
    <ChangeSetId>arn:aws:cloudformation:us-west-2:975635808270:changeSet/awscli-cloudformation-package-deploy-1517835685/6970f2b6-84fc-435b-816f-5c9e8585a57c</ChangeSetId>
    <Status>CREATE_PENDING</Status>
  </DescribeChangeSetResult>
  <ResponseMetadata>
    <RequestId>ac2ffbfc-0a74-11e8-baf1-d1f700e219a2</RequestId>
  </ResponseMetadata>
</DescribeChangeSetResponse>

2018-02-05 13:01:25,672 - MainThread - botocore.hooks - DEBUG - Event needs-retry.cloudformation.DescribeChangeSet: calling handler <botocore.retryhandler.RetryHandler object at 0x7fd6e6facc10>
2018-02-05 13:01:25,672 - MainThread - botocore.retryhandler - DEBUG - No retry needed.
2018-02-05 13:01:30,678 - MainThread - botocore.hooks - DEBUG - Event before-parameter-build.cloudformation.DescribeChangeSet: calling handler <function generate_idempotent_uuid at 0x7fd6e8a20aa0>
2018-02-05 13:01:30,678 - MainThread - botocore.endpoint - DEBUG - Making request for OperationModel(name=DescribeChangeSet) (verify_ssl=True) with params: {'body': {'Action': u'DescribeChangeSet', 'StackName': u'lambda-MyFunction27', 'Version': u'2010-05-15', 'ChangeSetName': 'arn:aws:cloudformation:us-west-2:975635808270:changeSet/awscli-cloudformation-package-deploy-1517835685/6970f2b6-84fc-435b-816f-5c9e8585a57c'}, 'url': u'https://cloudformation.us-west-2.amazonaws.com/', 'headers': {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': 'aws-cli/1.14.32 Python/2.7.12 Linux/4.9.58-18.55.amzn1.x86_64 botocore/1.8.36'}, 'context': {'auth_type': None, 'client_region': u'us-west-2', 'has_streaming_input': False, 'client_config': <botocore.config.Config object at 0x7fd6e6d85d50>}, 'query_string': '', 'url_path': '/', 'method': u'POST'}
2018-02-05 13:01:30,678 - MainThread - botocore.hooks - DEBUG - Event request-created.cloudformation.DescribeChangeSet: calling handler <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7fd6e6d85cd0>>
2018-02-05 13:01:30,678 - MainThread - botocore.hooks - DEBUG - Event choose-signer.cloudformation.DescribeChangeSet: calling handler <function set_operation_specific_signer at 0x7fd6e8a209b0>
2018-02-05 13:01:30,679 - MainThread - botocore.auth - DEBUG - Calculating signature using v4 auth.
2018-02-05 13:01:30,679 - MainThread - botocore.auth - DEBUG - CanonicalRequest:
POST
/

content-type:application/x-www-form-urlencoded; charset=utf-8
host:cloudformation.us-west-2.amazonaws.com
x-amz-date:20180205T130130Z
x-amz-security-token:FQoDYXdzEI7//////////wEaDJpASxA/4hbB4bWijiK3Az5vl/8NYta9mCpY80E1CfifffIud0v5QsJpf+YeAGiBI8UqnA+IP+pmXfxRYqzqAQ0MCNCtXyl/yrZDXMjhyHByp/8IgC6BpepjJxM2cqxnOMXvuJ5cAaVzTmZvQ031ykpNIStV5+mj8CkFZVFBd15n7OkSaQANUj01PpYY5JJgid2Qt3FJ1YCTuVSSHFMTfePfkNHwbhLnJ6KmBXYGDYdlWinHTJVzEsARdMJrMu9KHJ62IjoB3G9+F9M9WR+wTIyMaDxYKDfiAQeHfNWwT4cg2yrHViSWkpTceqZKBhQCDgr2fzfTcZbd+po4S3/Xn3PTKELI1Nnyfq4iDREUIhXh/7NAwcpUgxZmnzy9LLWzg5UzTJOXkC3iQdt7AvNbb/jAPaViC60MFqVtx4E6xEMauLCaEwNA5U4fFX9SU7VoPpBYJKhq+QIpLUf0gYHH6ZYXCpCBoCNUU4SoPdiK2u2qn0ZmmcARTTfVTxozas8VbZA4JWjV9JxSe4bTEugjoafhPUGxtPoe1CHQCEgUbiFxQb4bJY7PKp3XEfl/H2XIyCyH3R9YvXrnav/jiPNujpQYTQjYfQAo/qrh0wU=

content-type;host;x-amz-date;x-amz-security-token
16b42f4ad1ebeef5c8a063bd319743531d3b97f6868aeeda6d28a2ede28df7c1
2018-02-05 13:01:30,679 - MainThread - botocore.auth - DEBUG - StringToSign:
AWS4-HMAC-SHA256
20180205T130130Z
20180205/us-west-2/cloudformation/aws4_request
b752a07afc05314963ce55cae437bdcb17c63694d2e1bcef87a5ad6857d9fc2e
2018-02-05 13:01:30,679 - MainThread - botocore.auth - DEBUG - Signature:
0deb0a0aab90d28ad1fa90717326c389d926d5d16d42860833e6d6eadce6f63c
2018-02-05 13:01:30,680 - MainThread - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [POST]>
2018-02-05 13:01:30,726 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "POST / HTTP/1.1" 200 1308
2018-02-05 13:01:30,726 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amzn-requestid': 'af365e5e-0a74-11e8-baf1-d1f700e219a2', 'date': 'Mon, 05 Feb 2018 13:01:29 GMT', 'content-length': '1308', 'content-type': 'text/xml'}
2018-02-05 13:01:30,727 - MainThread - botocore.parsers - DEBUG - Response body:
<DescribeChangeSetResponse xmlns="http://cloudformation.amazonaws.com/doc/2010-05-15/">
  <DescribeChangeSetResult>
    <Capabilities>
      <member>CAPABILITY_IAM</member>
    </Capabilities>
    <CreationTime>2018-02-05T13:01:25.550Z</CreationTime>
    <NotificationARNs/>
    <StackId>arn:aws:cloudformation:us-west-2:975635808270:stack/lambda-MyFunction27/5f7b8510-0870-11e8-b987-503aca41a0fd</StackId>
    <ExecutionStatus>UNAVAILABLE</ExecutionStatus>
    <StackName>lambda-MyFunction27</StackName>
    <Changes/>
    <Description>Created by AWS CLI at 2018-02-05T13:01:25.201378 UTC</Description>
    <ChangeSetName>awscli-cloudformation-package-deploy-1517835685</ChangeSetName>
    <RollbackConfiguration/>
    <StatusReason>No updates are to be performed.</StatusReason>
    <Parameters>
      <member>
        <ParameterKey>Name</ParameterKey>
        <ParameterValue>MyFunction27</ParameterValue>
      </member>
    </Parameters>
    <ChangeSetId>arn:aws:cloudformation:us-west-2:975635808270:changeSet/awscli-cloudformation-package-deploy-1517835685/6970f2b6-84fc-435b-816f-5c9e8585a57c</ChangeSetId>
    <Status>FAILED</Status>
  </DescribeChangeSetResult>
  <ResponseMetadata>
    <RequestId>af365e5e-0a74-11e8-baf1-d1f700e219a2</RequestId>
  </ResponseMetadata>
</DescribeChangeSetResponse>

2018-02-05 13:01:30,727 - MainThread - botocore.hooks - DEBUG - Event needs-retry.cloudformation.DescribeChangeSet: calling handler <botocore.retryhandler.RetryHandler object at 0x7fd6e6facc10>
2018-02-05 13:01:30,727 - MainThread - botocore.retryhandler - DEBUG - No retry needed.
2018-02-05 13:01:30,727 - MainThread - awscli.customizations.cloudformation.deployer - DEBUG - Create changeset waiter exception
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/awscli-1.14.32-py2.7.egg/awscli/customizations/cloudformation/deployer.py", line 163, in wait_for_changeset
    WaiterConfig=waiter_config)
  File "/usr/local/lib/python2.7/site-packages/botocore-1.8.36-py2.7.egg/botocore/waiter.py", line 53, in wait
    Waiter.wait(self, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/botocore-1.8.36-py2.7.egg/botocore/waiter.py", line 323, in wait
    last_response=response,
WaiterError: Waiter ChangeSetCreateComplete failed: Waiter encountered a terminal failure state
2018-02-05 13:01:30,727 - MainThread - awscli.clidriver - DEBUG - Exception caught in main()
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/awscli-1.14.32-py2.7.egg/awscli/clidriver.py", line 208, in main
    return command_table[parsed_args.command](remaining, parsed_args)
  File "/usr/local/lib/python2.7/site-packages/awscli-1.14.32-py2.7.egg/awscli/clidriver.py", line 345, in __call__
    return command_table[parsed_args.operation](remaining, parsed_globals)
  File "/usr/local/lib/python2.7/site-packages/awscli-1.14.32-py2.7.egg/awscli/customizations/commands.py", line 187, in __call__
    return self._run_main(parsed_args, parsed_globals)
  File "/usr/local/lib/python2.7/site-packages/awscli-1.14.32-py2.7.egg/awscli/customizations/cloudformation/deploy.py", line 296, in _run_main
    parsed_args.fail_on_empty_changeset)
  File "/usr/local/lib/python2.7/site-packages/awscli-1.14.32-py2.7.egg/awscli/customizations/cloudformation/deploy.py", line 311, in deploy
    tags=tags
  File "/usr/local/lib/python2.7/site-packages/awscli-1.14.32-py2.7.egg/awscli/customizations/cloudformation/deployer.py", line 226, in create_and_wait_for_changeset
    self.wait_for_changeset(result.changeset_id, stack_name)
  File "/usr/local/lib/python2.7/site-packages/awscli-1.14.32-py2.7.egg/awscli/customizations/cloudformation/deployer.py", line 177, in wait_for_changeset
    .format(ex, status, reason))
RuntimeError: Failed to create the changeset: Waiter ChangeSetCreateComplete failed: Waiter encountered a terminal failure state Status: FAILED. Reason: No updates are to be performed.
2018-02-05 13:01:30,728 - MainThread - awscli.clidriver - DEBUG - Exiting with rc 255
```
Hey @sanathkr @joguSD. Any updates in the issue? Thanks


Seems like the issue is here: https://github.com/aws/aws-cli/blob/develop/awscli/customizations/cloudformation/deploy.py#L301

Forcing this parameter to always be true and there is no check of the --no-fail-on-empty-changeset
Also having this issue. Please fix guys! It breaks my travis-ci deploys.
It looks like this is actually a different error than the one we're expecting for the `--no-fail-on-empty-changeset`. In this case a change set is actually generated but cloudformation returns an error stating that there are no updates to be made. What changes are you trying to make when this is thrown?

@sanathkr 
It occurs for me as part of a Travis CI deploy where there are *no* changes to the CF stack. I still run CF deploy as Travis is not aware if there are or are not changes to the CF template.
My Jenkins agent that is running on ecs optimized amazon-linux ami has CLI version 1.9 which does not recognize "--no-fail-on-empty-changeset".

- So I'm doing deploy from python3 docker container instead, but the flag seems to have no effect.
For some reason, CFN returned a different error message than what we were expecting to detect empty changeset: https://github.com/aws/aws-cli/blob/develop/awscli/customizations/cloudformation/deployer.py#L172

May be we need to test for both error messages

Resolving patch:
diff --git a/awscli/customizations/cloudformation/deployer.py b/awscli/customizations/cloudformation/deployer.py
--- a/awscli/customizations/cloudformation/deployer.py
+++ b/awscli/customizations/cloudformation/deployer.py
@@ -169,7 +169,8 @@ def wait_for_changeset(self, changeset_id, stack_name):
             reason = resp["StatusReason"]
 
             if status == "FAILED" and \
-               "The submitted information didn't contain changes." in reason:
+               "The submitted information didn't contain changes." in reason or \
+                            "No updates are to be performed" in reason:
                     raise exceptions.ChangeEmptyError(stack_name=stack_name)
 
             raise RuntimeError("Failed to create the changeset: {0} "


Test patch:
diff --git a/tests/unit/customizations/cloudformation/test_deployer.py b/tests/unit/customizations/cloudformation/test_deployer.py
--- a/tests/unit/customizations/cloudformation/test_deployer.py
+++ b/tests/unit/customizations/cloudformation/test_deployer.py
@@ -358,6 +358,36 @@ def test_wait_for_changeset_no_changes(self):
         mock_client.get_waiter.assert_called_once_with(
                 "change_set_create_complete")
 
+    def test_wait_for_changeset_no_changes_with_another_error_msg(self):
+        stack_name = "stack_name"
+        changeset_id = "changeset-id"
+
+        mock_client = Mock()
+        mock_deployer = Deployer(mock_client)
+        mock_waiter = Mock()
+        mock_client.get_waiter.return_value = mock_waiter
+
+        response = {
+            "Status": "FAILED",
+            "StatusReason": "No updates are to be performed"
+        }
+
+        waiter_error = botocore.exceptions.WaiterError(name="name",
+                                                       reason="reason",
+                                                       last_response=response)
+        mock_waiter.wait.side_effect = waiter_error
+
+        with self.assertRaises(exceptions.ChangeEmptyError):
+            mock_deployer.wait_for_changeset(changeset_id, stack_name)
+
+        waiter_config = {'Delay': 5}
+        mock_waiter.wait.assert_called_once_with(ChangeSetName=changeset_id,
+                                                 StackName=stack_name,
+                                                 WaiterConfig=waiter_config)
+
+        mock_client.get_waiter.assert_called_once_with(
+                "change_set_create_complete")
+
     def test_wait_for_changeset_failed_to_create_changeset(self):
         stack_name = "stack_name"
         changeset_id = "changeset-id"