【问题标题】:Serverless framework deployment error: You're not authorized to access this resource无服务器框架部署错误:您无权访问此资源
【发布时间】:2020-12-27 12:19:01
【问题描述】:

当我使用 AWS 作为提供商部署我的无服务器框架项目时,我得到:

您无权访问此资源。 - 请联系支持并提供此标识符以引用此问题 BLAHBLAH

我使用serverless login 登录到无服务器框架

我的 serverless.yaml:

org: vladimirorg
app: vladimirapp
service: backend-rest

provider:
  name: aws
  runtime: nodejs12.x
  apiGateway: {
    shouldStartNameWithService: true
  }

  environment:
    DYNAMODB_TABLE: ${self:service}-${opt:stage, self:provider.stage}
    DYNAMODB_LOCAL_PORT: 9000
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: "arn:aws:dynamodb:#{AWS::Region}:#{AWS::AccountId}:table/${self:provider.environment.DYNAMODB_TABLE}"

functions:
  create:
    handler: src/handlers/create.create
    events:
      - http:
          path: todos
          method: post
          cors: true
          request:
            schema:
              application/json: ${file(src/schemas/create.json)}
...

【问题讨论】:

    标签: amazon-web-services deployment serverless-framework


    【解决方案1】:

    我找到了根本原因 - 如果您希望部署无服务器框架应用程序,您必须使用与您在无服务器框架中注册的完全相同的组织 (org) 和应用程序名称 (app)。

    要找出您当前的应用程序/组织名称,请更改它们或使用与部署相同的凭据在 https://app.serverless.com/ 上创建新的应用程序/组织登录到 Serverless Framework 的仪表板帐户,并确保您使用的是准确的组织和应用程序你的serverless.yaml 文件:

    org: orgname  <---
    app: appname  <--- 
    service: backend-rest
    ...
    
    

    因此,您不能只使用任意 org/app 名称,您必须使用在无服务器框架中注册的确切 org/app。

    【讨论】:

      【解决方案2】:

      我必须删除 org: &lt;org&gt; 才能让它在下次运行 sls 时再次询问我。

      【讨论】:

        【解决方案3】:

        尝试使用serverless logout 或删除~\.serverlessrc 文件,然后再次运行serverless login 并尝试您的命令

        【讨论】:

        • 也试过了,对我来说,它是一个不同的应用程序/组织名称,而不是那些在无服务器框架中注册的名称。
        【解决方案4】:

        您需要在 serverless.yml 中指定 AWS 配置文件,并在 ~/.aws/credentials 中设置您的 AWS 账户凭据,如下所示:

        [your_preferred_profile_name]
        aws_access_key_id=AKIAZEIJOWEFJOIWEF
        aws_secret_access_key=siAOEIF4+TdifOHeofoe+iJR8yFokT7uBmV4DEZ
        

        并在您的 serverless.yml 文件中指定此配置文件,如下所示:

        provider:
          name: aws
          runtime: nodejs12.x
          stage: dev
          region: us-east-1
          profile: your_preferred_profile_name
        

        您遇到的错误是 sls 框架无法访问您的 AWS 资源。 这意味着您没有在本地环境和无服务器框架中设置此 AWS 帐户凭据。

        【讨论】:

          猜你喜欢
          • 2020-10-28
          • 2022-08-03
          • 1970-01-01
          • 1970-01-01
          • 2018-02-09
          • 1970-01-01
          • 2020-07-05
          • 1970-01-01
          • 2020-05-07
          相关资源
          最近更新 更多