Edited at

sls deploy 時の--profile

More than 1 year has passed since last update.

sls deploy 時は、aws configを見てくれない問題

とりあえずならこう

$ AWS_PROFILE={profile} sls {deploy/remove} -s {stage}

ymlで対応したいなら

custom:

defaultProfile: default
defaultStage: test

provider:
name: aws
runtime: nodejs4.3
profile: ${opt:profile, self:custom.defaultProfile}
stage: ${opt:stage, self:custom.defaultStage}
region: ap-northeast-1
# deploymentBucketは、事前にS3バケットを作成しておく必要があります。
deploymentBucket: ${self:service}-deployment

らしいけど、こんなエラーが出る

同じ様に設定ファイルを書いているのに上手くいくプロジェクトとこのエラーになるプロジェクトがある

どこかに記憶されてしまうのか?わからんので、前述のが明確なのかなぁ

  Error --------------------------------------------------

ServerlessError: ServerlessError: '/20170118/us-east-1/cloudformation/aws4_request'
not a valid key=value pair (missing equal-sign) in Authorization
header: 'AWS4-HMAC-SHA256 Credential= /20170118/us-east-1/cloudformation/aws4_request,
SignedHeaders=host;x-amz-content-sha256;x-amz-date,
Signature=799833078703b49fb86f9131f025574d1deda0d5181b61f80975e79bf0585016'.

For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.

Stack Trace --------------------------------------------

Error: ServerlessError: ServerlessError: '/20170118/us-east-1/cloudformation/aws4_request' not a valid key=value pair (missing equal-sign) in Authorization header: 'AWS4-HMAC-SHA256 Credential= /20170118/us-east-1/cloudformation/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=799833078703b49fb86f9131f025574d1deda0d5181b61f80975e79bf0585016'.

追記

問題は2点あることがわかった


  1. aws credentialが参照できていない→AWS_PROFILEなどで解決

  2. The specified bucket does not exist

2の問題は、

①deploymentBucketが全世界でユニークにならなければならないこと

②${self:service}-deploymentをS3に用意しておかないといけないこと

命名規約:Bucket name contains invalid characters, [a-z.0-9-]

  # deploymentBucketは、事前にS3バケットを作成しておく必要があります。

deploymentBucket: ${self:service}-deployment

ではユニークにならない状況だったので

  # deploymentBucketは、事前にS3バケットを作成しておく必要があります。

deploymentBucket: ${self:service}.${self:provider.stage}.deployment

こうする