小编Nia*_*ker的帖子

具有相同内联策略的 AWS SAM 多个函数

在 AWS SAM .yaml 模板中,我可以为每个 lambda 函数声明一个内联策略,如下所示:

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
  MyFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: 's3://my-bucket/function.zip'
      Policies:
      - Statement:
        - Sid: SSMDescribeParametersPolicy
          Effect: Allow
          Action:
          - ssm:DescribeParameters
          Resource: '*'
        - Sid: SSMGetParameterPolicy
          Effect: Allow
          Action:
          - ssm:GetParameters
          - ssm:GetParameter
          Resource: '*'
Run Code Online (Sandbox Code Playgroud)

但是,如果我希望多个函数共享同一个内联策略文档,我们是否在模板的“全局”部分中声明它?

到目前为止,文档让我相信最干净的方法是创建一个带有附加策略的角色,然后简单地向每个函数声明该角色,如下所示:

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources: 
  MyFunction:
    Type: 'AWS::Serverless::Function' 
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: 's3://my-bucket/function.zip' 
      Role: arn:aws:iam::111111111111:role/SAMPolicy
Run Code Online (Sandbox Code Playgroud)

有没有办法在模板中声明内联策略并简单地在每个函数上引用它?

amazon-web-services aws-lambda aws-sam

8
推荐指数
1
解决办法
2342
查看次数

如果它是引用类型,为什么我可以清空一个数组?

我目前正在 JS 中学习数组。

令我困惑的是,像对象这样的数组是引用类型。

因此,考虑到这一点,如果我创建对同一个数组的新引用(变量)并将其清空,无论我是用“const”还是“let”关键字声明它,它都应该始终在两个引用处清空数组。

但是,如果我使用 'let' 关键字重新分配原始数组,我可以清空原始数组,但属于新引用的数组没有清空?

我认为下面的代码更清楚:


const array1 = [1, 2, 3]
const array2 = array1

array1.length = 0;

console.log(array1) //Outputs []
console.log(array2) //Outputs []

//So both arrays are emptied which makes sense as a reference type but...

let array3 = [1, 2, 3]
let array4 = array3

array3 = []

console.log(array3) //Outputs []
console.log(array4) //Outputs [1,2,3]

//what is going on here? I thought all arrays are reference types regardless of using const or let?
Run Code Online (Sandbox Code Playgroud)

javascript arrays

4
推荐指数
1
解决办法
189
查看次数