4

我对 aws 帐户具有编程访问权限,当我尝试部署基本功能时,我得到:

用户:arn:aws:iam::xxxx:user/myname 无权执行:cloudformation:DescribeStacks on resource:arn:aws:cloudformation:eu-west-1:xxxxxx:stack/hello-world-dev/*

我检查了我的密钥,它们是正确的,我假设我的用户没有 cloudformation 访问权限。

我的问题是,是否可以在 yaml 文件中为我的用户设置权限?例如 cloudformation 完全访问、lambda 完全访问等。

您可以在下面找到我的函数和 yaml 文件:

handler.js

module.exports.helloWorld = (event, context, callback) => {
  const response = {
    statusCode: 200,
    headers: {
      'Access-Control-Allow-Origin': '*', // Required for CORS support to work
    },
    body: JSON.stringify({
      message: 'Go Serverless v1.0! Your function executed successfully!',
      input: event,
    }),
  };

  callback(null, response);
};

无服务器.yaml

service: hello-world

provider:
  name: aws
  runtime: nodejs8.10
  region: eu-west-1
  # iamRoleStatements:
  #   - Effect: "Allow"
  #     Action:
  #      - cloudformation: CreateStack
  #      - cloudformation: DescribeStacks
  #      - cloudformation: CreateChangeSet
  #      - cloudformation: ListStacks
  #      - cloudformation: UpdateStack
  #      - cloudformation: DescribeChangeSet
  #      - cloudformation: ExecuteChangeSet
  #      - iam: GetRole
  #      - lambda: UpdateFunctionCode
  #      - lambda: UpdateFunctionConfig
  #      - lambda: GetFunctionConfiguration
  #      - lambda: AddPermission
  #      - s3: GetObject
  #     Resource: "*"

# The `functions` block defines what code to deploy
functions:
  helloWorld:
    handler: handler.helloWorld
    # The `events` block defines how to trigger the handler.helloWorld code
    events:
      - http:
          path: hello-world
          method: get
          cors: true
4

1 回答 1

4

所以这里的问题是您的默认 ~/.aws/credentials 密钥没有分配给它们的正确权限。

您无法在 yaml 文件中为您的用户分配权限,您需要进入控制台并分配,您可以在资源部分创建用户,但这会违反直觉 - 我不太确定您的知识水平如此,如果您需要更多帮助,请发表评论,我会充实我的答案。

您的部署角色/权限基本上应该具有 Lambda、IAM、Cloudformation 和 APIG 完全访问权限。

于 2018-09-17T18:58:26.443 回答