标签: aws-ssm

AWS Systems Manager - 会话管理器和运行命令“文档处理意外失败”

我正在使用会话管理器/运行命令来访问我的一些实例,它适用于某些实例,但不适用于其他实例。

我对一些实例具有相同的配置、相同的安全组、IAM 角色、使用相同代理版本安装的代理,并且我已使用以下内容通过 AWS CLI 验证了这些实例:

aws ssm describe-instance-information \
--instance-information-filter-list key=InstanceIds,valueSet=instance-id
Run Code Online (Sandbox Code Playgroud)

我可以启动会话,它会打开终端视图,并在延迟后向我发送此错误或黑屏,

Your session has been terminated for the following reasons: 
document process failed unexpectedly: document worker timed out, 
check [ssm-document-worker]/[ssm-session-worker] log for the crash reason
Run Code Online (Sandbox Code Playgroud)

我尝试过更新代理版本、通过 CLI 验证代理是否已安装并处于活动状态、三重检查安全组、IAM 角色和差异,但遇到了困难。

这是其他人看到的 AWS 错误还是我的配置中遗漏了某些内容?我可能遗漏了一些东西,但我所看到的所有内容都显示了两个具有相同属性的实例,其中一个实例适用于 SSM 会话管理器,而另一个实例则不适用。

amazon-ec2 amazon-web-services aws-ssm aws-session-manager

6
推荐指数
1
解决办法
1万
查看次数

AWS Lambda“无法编组响应”错误

我正在尝试设置一个 AWS lambda,它将在我的 EC2 实例中启动 SSM 会话并运行命令。现在为了简单起见,我只是想运行ls。这是我的 lambda 函数:

import json
import boto3

def lambda_handler(commands, context):
    """Runs commands on remote linux instances
    :param client: a boto/boto3 ssm client
    :param commands: string, each one a command to execute on the instance
    :return: the response from the send_command function (check the boto3 docs for ssm client.send_command() )
    """
    client = boto3.client('ssm')
    print ("Hello world")
    resp = client.send_command(
        DocumentName="AWS-RunShellScript",
        # Would normally pass commands param here but hardcoding it instead for …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services boto3 aws-lambda aws-ssm

6
推荐指数
2
解决办法
7101
查看次数

AWS System Manager 能否以 ec2-user 身份登录

我有一个 EC2 实例,通常通过手动 sshing 到盒子上使用ec2-user。随着时间的推移,该盒子已经积累了各种自定义配置,例如 docker 配置和对我们私人存储库的 git 访问权限。

我尝试使用 AWS System Manager 自动执行盒子上的一些命令,但系统管理员以 登录root,缺少上述的ec2-user. 是否可以以某种方式ec2-user从系统管理员登录或在登录时更改用户?因为盒子已经定制了几个月,所以如何从头开始重新配置并不明显(也没有时间深入研究)。

已尝试通过更改用户,su ec2-user但无济于事。

作为解决方法,我只是直接在盒子上运行 SSH 命令,例如

ssh -i ~/.ssh/MYPEM.pem ec2-user@MYINSTANCE.us-east-2.compute.amazonaws.com "touch FOOFILE && git clone REPO"

但这完全避开了系统管理器,并且是不可取的。

amazon-ec2 amazon-web-services aws-ssm

6
推荐指数
1
解决办法
3930
查看次数

如何从 AWS 系统管理器中存储的参数中获取 Kubernetes Secret

作为最佳实践,我希望避免在 Git 中保密,并将其存储在 AWS SSM 中。

有什么方法可以从 AWS System Manager 获取值并用于创建 Kubernetes Secret?

kubernetes aws-ssm

6
推荐指数
1
解决办法
7794
查看次数

AWS SSM 会话管理器不显示实例

我将策略:AmazonSSMManagedInstanceCore 添加到 Windows 实例(正在运行 SSM 代理)的实例配置文件中...但它没有显示在会话管理器下。

它一直显示:“没有与所需 IAM 角色关联的实例。” 知道是什么原因造成的吗?

(我也尝试过使用 amazon linux 2 实例——结果相同)。

编辑:是的,该实例位于私有子网中,可能无法访问互联网——所以这可能是问题。

amazon-ec2 amazon-web-services aws-ssm aws-session-manager

6
推荐指数
1
解决办法
7903
查看次数

从 aws ssm get-parameter 命令仅检索一个参数值?

如何从以下命令的以下输出中仅打印 Value 属性的值

aws ssm get-parameter --name "/test/ip/cidr" --profile test
{
    "Parameter": {
        "Name": "/test/ip/cidr",
        "Type": "String",
        "Value": "172.18.0.0/20",
        "Version": 1,
        "LastModifiedDate": 1585251360.78,
        "ARN": "arn:aws:ssm:us-east-1:123233:parameter/test/ip/cidr",
        "DataType": "text"
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试运行以下命令,但打印类似 [{"Value": "172.18.0.0/20"}] 但只想查看 172.18.0.0/20

aws ssm get-parameters --names "/test/ip/cidr" --query "Parameters[*].{Value:Value}" --profile test
[
    {
        "Value": "172.18.0.0/20"
    }
]
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-ssm

6
推荐指数
1
解决办法
7276
查看次数

无法从AWS Lambda函数获取AppConfig的配置文件

Lambda 函数 - Node.js

const AWS = require('aws-sdk')

exports.handler = async (event) => {
  var appconfig = new AWS.AppConfig({ apiVersion: '2019-10-09' })
  var params = {
    ApplicationId: '6xeris1',
    ConfigurationProfileId: '0ck2ijf'
  }
  const data = await appconfig.getConfigurationProfile(params).promise().catch(err => {
    console.log(err)
  })

  if (data) {
    console.log(data)

    const response = {
      statusCode: 200,
      headers: {
        'Access-Control-Allow-Headers': 'Content-Type',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'OPTIONS,POST,GET'
      },
      body: JSON.stringify(data)
    }
    return response
  } else {
    const response = {
      statusCode: 500,
      headers: {
        'Access-Control-Allow-Headers': 'Content-Type',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-lambda aws-ssm aws-app-config

5
推荐指数
1
解决办法
4401
查看次数

从 AWS::SSM::Document 中的参数 [StringList] 检索值

我使用 CloudFormation 创建了一个 AWS SSM 文档:

SSMDocument::
Type: AWS::SSM::Document
Properties:
  DocumentType: Command
  Content:
    schemaVersion: '2.2'
    description: Run a PowerShell script
    parameters:
      Node1:
        type: String
      Node2:
        type: String
      List:
        type: StringList
    mainSteps:
    - action: aws:runPowerShellScript
      name: PreDeploy
      precondition:
        StringEquals:
        - platformType
        - Windows
      inputs:
        timeoutSeconds: '3600'
        runCommand:
        - |
          # Retrieve values from parameters
          $IpNode1 = "{{Node1}}"
          $IpNode2 = "{{Node2}}"
          $List = "{{EnvNames}}"
Run Code Online (Sandbox Code Playgroud)

该文档包含PowerShell在新创建的实例上执行的脚本。我正在传递参数,其中之一($List)具有 type StringList,问题是我收到错误:

Parameter "List" is "STRING_LIST" type and can't be used as …
Run Code Online (Sandbox Code Playgroud)

powershell list aws-cloudformation aws-ssm

5
推荐指数
0
解决办法
1746
查看次数

如何配置 IAM 角色以为新的 EC2 实例启用 SSM?

我正在运行以下命令:

\n
KEY=test\nQUERY=ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20210430\n\naws ec2 create-key-pair --key-name $KEY --query \'KeyMaterial\' --output text > $KEY.pem\nchmod 600 $KEY.pem\n\naws ec2 create-security-group --group-name "$KEY" --description "$KEY" --output text > $KEY.sg.txt\nSGID=$(cat $KEY.sg.txt)\naws ec2 authorize-security-group-ingress --group-id $SGID --protocol tcp --port 22 --cidr 0.0.0.0/0 > $KEY.sg.json\n\nAMIID=$(aws ec2 describe-images --filters "Name=name,Values=$QUERY" --query "reverse(sort_by(Images, &CreationDate))[0].[ImageId]" --output text)\nINSTANCEID=$(aws ec2 run-instances --count 1 --instance-type t2.micro --key-name "$KEY" --security-group-ids "$KEY" --image-id $AMIID --query \'Instances[*].InstanceId\' --output text)\n\n# after a wait, instance appears running\n\naws ssm describe-instance-information --output text\n# prints nothing\n\naws ssm send-command --instance-ids "$INSTANCEID" --document-name …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-iam aws-cli aws-ssm

5
推荐指数
1
解决办法
6621
查看次数

自动化类型和命令类型的 AWS Systems Manager 文档之间有什么区别?

他们似乎是为了同一个目的。它们都可以分解为多个步骤,每个步骤都是一个脚本。命令或自动化文档也可以都是状态管理器中 SSM 关联的一部分。所以我的问题很简单。在什么情况下我需要创建命令文档而不是自动化文档?

amazon-web-services aws-ssm

5
推荐指数
1
解决办法
3227
查看次数