AWS SSM参数存储

时间:2018-09-10 23:26:22

标签: amazon-web-services aws-sdk aws-cli aws-kms aws-ssm

反正有没有只是要核对/删除AWS Parameters Store中的所有项目吗?

我找到的所有命令行都是一一删除它,或者在给定名称列表的情况下删除它。

我也尝试使用

#include<stdio.h>
#include<strings.h> // We include this library to manipulate text strings.
#include<ctype.h>
#define SIZE 100
int printFirstWord(char *pointer)
{
    int i;
    int length=strlen(pointer);
    for(i=0; i<length; i++)
    {
        if(isalpha(pointer[i])!=0)
        {
            printf("%c",pointer[i]);
        }
        else if(isalpha(pointer[i])==0)
        {
            break;
        }
    }
return 0;
}
char *skipWords(char sentence[],int words)
{
    int count=0,x,i;
    int length=strlen(sentence);
    char *pointer;

    if(words==0)
    {
        pointer=&sentence[0];
    }
    else
    {
        for(i=0; i<length; i++)
        {
            if(isalpha(sentence[i])==0)
            {
                x=i+1;
                count=count+1;
                pointer=&sentence[x];
            }
            if(i==(length-1))
            {
                pointer=NULL;
                break;
            }
            if(count==words)
            {
                break;
            }
        }
    }
    return pointer;
}
void printWord(char sentence[], int wordNumber)
{
    char *pointer;
    int length;
    length=strlen(sentence);
    int i;
    pointer=skipWords(sentence,wordNumber);
    if(pointer==NULL)
    {
        printf("This word doesn't exist");
        return ;
    }
    printFirstWord(pointer);
}
int main()
{
    char sentence[SIZE];
    int length;
    int words;
    int check=1;

    while(check==1)
    {
        printf("Write a sentence; ");
        gets(sentence);
        length=strlen(sentence);
        printf("\nWhich word should be printed? ");
        scanf(" %d",&words);
        printWord(sentence, words);
        printf("\n Do you want to enter a new sentence (press 1 to say yes)?");
        scanf("%d",&check);
        getchar();
    }
return 0;
}

带有test.json文件的

aws ssm delete-parameters --cli-input-json test.json

仍然不起作用。

理想情况下,如果我可以使用--query并按原样使用它,那就太好了。

我正在像这样使用--query

{
    "Names": [
        "test1",
        "test2"
    ]
}

4 个答案:

答案 0 :(得分:3)

当您需要通过AWS Systems Manager参数存储中的路径删除所有参数时,必须处理10个以上的分页。 否则,该命令将失败并显示错误:

An error occurred (ValidationException) when calling the DeleteParameters operation: 1 validation error detected: Value '[/config/application/prop1, ...]' at 'names' failed to satisfy constraint: Member must have length less than or equal to 10

以下使用AWS CLI pagination options的Bash脚本按路径从AWS SSM参数存储中删除任意数量的参数:

#!/bin/bash

path=/config/application_dev/

while : ; do
  aws ssm delete-parameters --names $(aws ssm get-parameters-by-path --path "$path" --query "Parameters[*].Name" --output text --max-items 10 $starting_token | grep -v None)
  next_token=$(aws ssm get-parameters-by-path --path "$path" --query NextToken --output text --max-items 10 | grep -v None)
  if [ -z "$next_token" ]; then
    starting_token=""
    break
  else
    starting_token="--starting-token $next_token"
  fi
done

答案 1 :(得分:1)

您可以将get-parameters-by-pathdelete-parameters组合:

aws ssm delete-parameters --names `aws ssm get-parameters-by-path --path / --query Parameters[].Name --output text`

我通过创建两个参数,然后运行上面的命令进行了测试。已成功通过参数删除。

答案 2 :(得分:0)

这是我的一线解决方案:

$ for key in $(aws ssm get-parameters-by-path --path "/" --recursive | jq -r '.Parameters[] | .Name' | tr '\r\n' ' '); do aws ssm delete-parameter --name ${key}; done

注意:如果您复制并粘贴此内容,请小心,因为它会删除“ /”下的所有内容

答案 3 :(得分:0)

试试这个并执行多次

aws ssm delete-parameters --names `aws ssm get-parameters-by-path --path / --recursive --query Parameters[].Name --output text --max-items 9`