Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(aws): update spec #2470

Conversation

withfig-bot
Copy link
Collaborator

Automated PR for latest AWS CLI release by https://github.com/withfig/aws-cli-plugin

@withfig-bot
Copy link
Collaborator Author

Overview

src/aws/codeconnections.ts:

Info:

src/aws/emr-serverless.ts:

Info:

src/aws/sagemaker-metrics.ts:

Info:

src/aws/pcs.ts:

Info:

src/aws/resource-explorer-2.ts:

Info:

src/aws/mailmanager.ts:

Info:

src/aws/bedrock.ts:

Info:

src/aws/kinesis.ts:

Info:

src/aws/athena.ts:

Info:

src/aws/ds-data.ts:

Info:

src/aws/ds.ts:

Info:

src/aws/bedrock-agent.ts:

Info:

src/aws/ce.ts:

Info:

URLs:

  • https://ce.us-east-1.amazonaws.com

src/aws/workspaces-web.ts:

Info:

src/aws/deploy.ts:

Info:

src/aws/pinpoint-sms-voice-v2.ts:

Info:

src/aws/lambda.ts:

Info:

Single Functions:

custom:

 async function (tokens, executeShellCommand) {
      return listCustomGenerator(
        tokens,
        executeShellCommand,
        "list-layer-versions",
        ["--layer-name"],
        "LayerVersions",
        "Version"
      );
    }

postProcess:

 function (out, tokens) {
      try {
        const accountId = JSON.parse(out)["Account"];
        return [{ name: accountId }, { name: "*" }];
      } catch (error) {
        console.error(error);
      }
      return [];
    }

custom:

 async function (tokens, executeShellCommand) {
      return listCustomGenerator(
        tokens,
        executeShellCommand,
        "get-layer-version-policy",
        ["--layer-name", "--version-number"],
        "RevisionId"
      );
    }

custom:

 async function (tokens, executeShellCommand) {
      return listCustomGenerator(
        tokens,
        executeShellCommand,
        "get-policy",
        ["--function-name"],
        "RevisionId"
      );
    }

custom:

 async function (tokens, executeShellCommand) {
      return listCustomGenerator(
        tokens,
        executeShellCommand,
        "get-function",
        ["--function-name"],
        "Configuration",
        "RevisionId"
      );
    }

custom:

 async function (tokens, executeShellCommand) {
      return listCustomGenerator(
        tokens,
        executeShellCommand,
        "list-aliases",
        ["--function-name"],
        "Aliases",
        "Name"
      );
    }

custom:

 async function (tokens, executeShellCommand) {
      try {
        const idx = tokens.indexOf("--function-name");
        const args = [
          "lambda",
          "list-versions-by-function",
          "--function-name",
          tokens[idx + 1],
        ];
        const { stdout } = await executeShellCommand({
          command: "aws",
          args,
        });
        const list = JSON.parse(stdout)["Versions"];
        return list
          .filter((elm) => elm.Version !== "$LATEST")
          .map((elm) => {
            const version = elm["Version"];
            return {
              insertValue: version,
              name: version,
              displayName: `version: ${version}`,
              icon: "fig://icon?type=aws",
            };
          });
      } catch (e) {
        console.log(e);
      }
      return [];
    }

custom:

 async function (tokens, executeShellCommand) {
      return listCustomSIDGenerator(tokens, executeShellCommand, "get-policy", [
        "--function-name",
      ]);
    }

custom:

 async function (tokens, executeShellCommand) {
      return listCustomSIDGenerator(
        tokens,
        executeShellCommand,
        "get-layer-version-policy",
        ["--layer-name", "--version-number"]
      );
    }

custom:

 async function (tokens, executeShellCommand) {
      // Getting sqs queues is implemented, although it has a huge performance toll.
      // It seems Fig rejects long-running promises after a time.
      // I am currently investigating if this is the case.
      // const result = await Promise.all([
      //   getResultList(tokens, executeShellCommand, "aws sqs list-queues", "QueueUrls"),
      //   getResultList(tokens, executeShellCommand, "aws kinesis list-streams", "StreamNames")
      // ]);
      // const objects = result.flat().map((elm) => {
      //   if (elm.includes("sqs")) {
      //     return ({
      //       command: `aws sqs get-queue-attributes --queue-url ${elm} --attribute-names QueueArn`,
      //       parentKey: "Attributes",
      //       childKey: "QueueArn",
      //     })
      //   }
      //   return ({
      //     command: `aws kinesis describe-stream --stream-name ${elm}`,
      //     parentKey: "StreamDescription",
      //     childKey: "StreamARN",
      //   })
      // });
      return MultiSuggestionsGenerator(tokens, executeShellCommand, [
        {
          command: ["dynamodbstreams", "list-streams"],
          parentKey: "Streams",
          childKey: "StreamArn",
        },
        {
          command: ["kafka", "list-clusters"],
          parentKey: "ClusterInfoList",
          childKey: "ClusterArn",
        },
        //...objects,
      ]);
    }

custom:

 async function (tokens, executeShellCommand) {
      // Getting sqs queues is implemented, although it has a huge performance toll.
      // It seems Fig rejects long-running promises after a time.
      // I am currently investigating if this is the case.
      // const out = await executeShellCommand("aws sqs list-queues");
      // const list = JSON.parse(out)["QueueUrls"];
      // const sqsObjects = list.map((url) => ({
      //   command: `aws sqs get-queue-attributes --queue-url ${url} --attribute-names QueueArn`,
      //   parentKey: "Attributes",
      //   childKey: "QueueArn",
      // }));
      return MultiSuggestionsGenerator(tokens, executeShellCommand, [
        {
          command: ["sns", "list-topics"],
          parentKey: "Topics",
          childKey: "TopicArn",
        },
        {
          command: ["events", "list-event-buses"],
          parentKey: "EventBuses",
          childKey: "Arn",
        },
        {
          command: ["lambda", "list-functions"],
          parentKey: "Functions",
          childKey: "FunctionArn",
        },
        // ...sqsObjects,
      ]);
    }

postProcess:

 function (out) {
      return postPrecessGenerator(out, "Roles", "RoleName");
    }

postProcess:

 function (out) {
      return postPrecessGenerator(out, "Keys", "KeyArn");
    }

postProcess:

 function (out) {
      return postPrecessGenerator(out, "Layers", "LayerArn");
    }

postProcess:

 function (out) {
      try {
        const list = JSON.parse(out)["Layers"];
        return list.map((elm) => {
          return {
            name: elm["LatestMatchingVersion"]["LayerVersionArn"],
            icon: "fig://icon?type=aws",
          };
        });
      } catch (e) {
        console.log(e);
      }
      return [];
    }

postProcess:

 function (out) {
      try {
        const list = JSON.parse(out)["FileSystems"];
        return list.map((elm) => {
          const name = ("FileSystemArn" ? elm["FileSystemArn"] : elm) as string;
          return {
            name: `Arn=${name},LocalMountPath=/mnt/`,
            icon: "fig://icon?type=aws",
          };
        });
      } catch (e) {
        console.log(e);
      }
      return [];
    }

postProcess:

 function (out) {
      return postPrecessGenerator(
        out,
        "CodeSigningConfigs",
        "CodeSigningConfigArn"
      );
    }

postProcess:

 function (out) {
      return postPrecessGenerator(out, "EventSourceMappings", "UUID");
    }

postProcess:

 function (out) {
      return postPrecessGenerator(out, "Functions", "CodeSha256");
    }

postProcess:

 function (out, tokens) {
      try {
        return out.split("\n").map((line) => {
          const parts = line.split(/\s+/);
          // sub prefix
          if (!parts.length) {
            return [];
          }
          return {
            name: parts[parts.length - 1],
          };
        }) as Fig.Suggestion[];
      } catch (error) {
        console.error(error);
      }
      return [];
    }

custom:

 async function (tokens, executeShellCommand) {
      try {
        const idx = tokens.indexOf("--s3-bucket");
        const args = [
          "s3",
          "ls",
          `${_prefixS3}${tokens[idx + 1]}`,
          "--recursive",
          "--page-size",
          "1000",
        ];
        const { stdout } = await executeShellCommand({
          command: "aws",
          args,
        });
        if (stdout == "") {
          return [];
        }
        if (stdout.trim() === _prefixS3) {
          return [
            {
              name: _prefixS3,
              insertValue: _prefixS3,
            },
          ];
        }
        return stdout.split("\n").map((line) => {
          const parts = line.split(/\s+/);
          // sub prefix
          if (!parts.length) {
            return [];
          }
          return {
            name: parts[parts.length - 1],
          };
        }) as Fig.Suggestion[];
      } catch (error) {
        console.error(error);
      }
      return [];
    }

custom:

 async function (tokens, executeShellCommand) {
      try {
        const bucketIdx = tokens.indexOf("--s3-bucket");
        const objectIdx = tokens.indexOf("--s3-key");
        const args = [
          "s3api",
          "list-object-versions",
          "--bucket",
          tokens[bucketIdx + 1],
          "--prefix",
          tokens[objectIdx + 1],
        ];
        const { stdout } = await executeShellCommand({
          command: "aws",
          args,
        });
        if (stdout == "") {
          return [];
        }
        if (stdout.trim() === _prefixS3) {
          return [
            {
              name: _prefixS3,
              insertValue: _prefixS3,
            },
          ];
        }
        const list = JSON.parse(stdout)["Versions"];
        return list
          .filter((elm) => elm["VersionId"] !== "null")
          .map((elm) => {
            return {
              name: elm["VersionId"],
              icon: "fig://icon?type=aws",
            };
          });
      } catch (e) {
        console.log(e);
      }
      return [];
    }

URLs:

  • https://opensource.org/licenses/MIT.

src/aws/ecs.ts:

Info:

URLs:

  • http://169.254.169.254/latest/dynamic/instance-identity/document/
  • http://169.254.169.254/latest/dynamic/instance-identity/signature/

src/aws/quicksight.ts:

Info:

URLs:

  • https://sapp.amazon.com
  • https://sapp.amazon.com

src/aws/cloudformation.ts:

Info:

Single Functions:

postProcess:

 function (out) {
      try {
        const accountId = JSON.parse(out)["Account"];
        return [{ name: accountId }];
      } catch (error) {
        console.error(error);
      }
      return [];
    }

postProcess:

 function (out) {
      return postPrecessGenerator(out, "TypeSummaries", "TypeArn");
    }

postProcess:

 function (out) {
      return postPrecessGenerator(out, "Exports", "Name");
    }

postProcess:

 function (out, tokens) {
      try {
        return out.split("\n").map((line) => {
          const parts = line.split(/\s+/);
          // sub prefix
          if (!parts.length) {
            return [];
          }
          return {
            name: _prefixS3 + parts[parts.length - 1],
          };
        }) as Fig.Suggestion[];
      } catch (error) {
        console.error(error);
      }
      return [];
    }

postProcess:

 function (out) {
      return postPrecessGenerator(out, "Keys", "KeyId");
    }

src/aws/glue.ts:

Info:

src/aws.ts:

Info:

Single Functions:

postProcess:

 function (out) {
    if (out.trim() == "") {
      return [];
    }
    return out.split("\n").map((line) => ({
      name: line,
      icon: "👤",
    }));
  }

URLs:

  • https://bcm-data-exports.us-east-1.api.aws
  • https://budgets.amazonaws.com
  • https://ce.us-east-1.amazonaws.com
  • https://service.chime.aws.amazon.com.
  • https://cost-optimization-hub.us-east-1.amazonaws.com
  • https://elasticbeanstalk.s3.amazonaws.com/doc/2010-12-01/AWSElasticBeanstalk.wsdl.
  • https://freetier.us-east-1.api.aws
  • https://organizations.us-east-1.amazonaws.com
  • http://aws.amazon.com/simpledb/
  • https://tools.ietf.org/html/rfc8628)
  • https://tax.us-east-1.amazonaws.com
  • http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html

src/aws/s3api.ts:

Info:

Single Functions:

postProcess:

 function (out) {
    const json = JSON.parse(out);
    return json.Buckets.map((bucket) => {
      let date;
      try {
        date = new Date(bucket.CreationDate).toLocaleDateString();
      } catch (e) {
        date = bucket.CreationDate;
      }
      return {
        name: bucket.Name,
        description: `Created: ${date}`,
      };
    });
  }

URLs:

  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com.
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://www.rfc-editor.org/rfc/rfc9110.html#name-range.
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com.
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • http://acs.amazonaws.com/groups/s3/LogDelivery
  • http://www.example.com
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • http://www.w3.org/2001/XMLSchema-instance
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://s3express-control.region_code.amazonaws.com/bucket-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
  • https://www.rfc-editor.org/rfc/rfc6266#section-4
  • https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding
  • https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
  • https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type
  • https://www.rfc-editor.org/rfc/rfc7234#section-5.3
  • http://www.example.com/
  • http://www.w3.org/2001/XMLSchema-instance
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
  • https://bucket_name.s3express-az_id.region.amazonaws.com/key-name

src/aws/rds.ts:

Info:

@withfig-bot
Copy link
Collaborator Author

Hello @withfig-bot,
thank you very much for creating a Pull Request!
Here is a small checklist to get this PR merged as quickly as possible:

  • Do all subcommands / options which take arguments include the args property (args: {})?
  • Are all options modular? E.g. -a -u -x instead of -aux
  • Have all other checks passed?

Please add a 👍 as a reaction to this comment to show that you read this.

@grant0417 grant0417 merged commit 98ff25c into withfig:master Sep 25, 2024
5 checks passed
@withfig withfig locked and limited conversation to collaborators Sep 25, 2024
@withfig-bot withfig-bot deleted the auto-update/aws/910bdd75-4a68-446a-bb0d-a414e7470d7d branch October 2, 2024 00:26
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants