-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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 #2519
feat(aws): update spec #2519
Conversation
Overviewsrc/aws/bedrock-agent-runtime.ts:Info:src/aws/appconfig.ts:Info:src/aws/bedrock-runtime.ts:Info:src/aws/b2bi.ts:Info:src/aws/geo-maps.ts:Info:src/aws/geo-places.ts:Info:src/aws/iot-jobs-data.ts:Info:src/aws/bedrock.ts:Info:src/aws/application-signals.ts:Info:src/aws/ssm-quicksetup.ts:Info:src/aws/observabilityadmin.ts:Info:src/aws/discovery.ts:Info:URLs:
src/aws/internetmonitor.ts:Info:src/aws/mwaa.ts:Info:src/aws/geo-routes.ts:Info:src/aws/rbin.ts:Info:src/aws/notificationscontacts.ts:Info:src/aws/accessanalyzer.ts:Info:src/aws/license-manager-user-subscriptions.ts:Info:src/aws/chatbot.ts:Info:src/aws/health.ts:Info:src/aws/invoicing.ts:Info:URLs:
src/aws/taxsettings.ts:Info:URLs:
src/aws/billing.ts:Info:URLs:
src/aws/application-autoscaling.ts:Info:URLs:
src/aws/controltower.ts:Info:src/aws/efs.ts:Info:src/aws/mediapackagev2.ts:Info:src/aws/timestream-query.ts:Info:src/aws/keyspaces.ts:Info:src/aws/compute-optimizer.ts:Info:src/aws/codepipeline.ts:Info:src/aws/qapps.ts:Info:src/aws/notifications.ts:Info:src/aws/connectcampaignsv2.ts:Info:src/aws/ivs.ts:Info:URLs:
src/aws/neptune-graph.ts:Info:src/aws/networkflowmonitor.ts:Info:src/aws/elbv2.ts:Info:src/aws/inspector2.ts:Info:src/aws/bcm-pricing-calculator.ts:Info:URLs:
src/aws/security-ir.ts:Info:src/aws/mediaconvert.ts:Info:URLs:
src/aws/chime-sdk-voice.ts:Info:src/aws/sts.ts:Info:src/aws/xray.ts:Info:src/aws/partnercentral-selling.ts:Info:src/aws/cleanrooms.ts:Info:src/aws/ce.ts:Info:URLs:
src/aws/bedrock-agent.ts:Info:src/aws/datasync.ts:Info:src/aws/fsx.ts:Info:src/aws/customer-profiles.ts:Info:src/aws/memorydb.ts:Info:src/aws/iotfleetwise.ts:Info:src/aws/cloudtrail.ts:Info:src/aws/workspaces-web.ts:Info:src/aws/qbusiness.ts:Info:URLs:
src/aws/sns.ts:Info:src/aws/opensearch.ts:Info:src/aws/vpc-lattice.ts:Info:src/aws/events.ts:Info:URLs:
src/aws/imagebuilder.ts:Info:URLs:
src/aws/resiliencehub.ts:Info:src/aws/networkmanager.ts:Info:src/aws/stepfunctions.ts:Info:src/aws/cloudwatch.ts:Info:Single Functions:custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-metrics",
["--namespace"],
"Metrics",
"MetricName"
);
} custom: async function (tokens, executeShellCommand) {
return listDimensionTypes(
tokens,
executeShellCommand,
"list-metrics",
"--namespace",
"Metrics",
"Dimensions"
);
} custom: async function (tokens, executeShellCommand) {
return listDimensionTypes(
tokens,
executeShellCommand,
"describe-anomaly-detectors",
"--namespace",
"AnomalyDetectors",
"Dimensions"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"describe-anomaly-detectors",
["--namespace", "--metric-name"],
"AnomalyDetectors",
"Stat"
);
} custom: async function (tokens, executeShellCommand) {
// get list of stream names
const result = await getResultList(
tokens,
executeShellCommand,
["firehose", "list-delivery-streams"],
"DeliveryStreamNames"
);
// construct "query"
const objects = result.flat().map((stream) => {
return {
command: [
"firehose",
"describe-delivery-stream",
"--delivery-stream-name",
Array.isArray(stream.name) ? stream.name[0] : stream.name,
],
parentKey: "DeliveryStreamDescription",
childKey: "DeliveryStreamARN",
};
});
// Fire up multiple API calls
return MultiSuggestionsGenerator(tokens, executeShellCommand, [
...objects,
]);
} src/aws/autoscaling.ts:Info:URLs:
src/aws/apigateway.ts:Info:src/aws/omics.ts:Info:src/aws/workspaces.ts:Info:src/aws/iotwireless.ts:Info:src/aws/route53resolver.ts:Info:src/aws/organizations.ts:Info:URLs:
src/aws/qconnect.ts:Info:URLs:
src/aws/cloudfront.ts:Info:src/aws/pinpoint-sms-voice-v2.ts:Info:src/aws/configservice.ts:Info:src/aws/iotsitewise.ts:Info:src/aws/eks.ts:Info:Single Functions:postProcess: function (out) {
try {
const list = JSON.parse(out)["Keys"];
return list.map((key) => {
return {
name: `resources=secrets,provider={keyArn=${key["KeyArn"]}}`,
icon: "fig://icon?type=aws",
};
});
} catch (e) {
console.log(e);
}
return [];
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-addons",
["--cluster-name"],
"addons"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-fargate-profiles",
["--cluster-name"],
"fargateProfileNames"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-nodegroups",
["--cluster-name"],
"nodegroups"
);
} URLs:
src/aws/transfer.ts:Info:URLs:
src/aws/s3control.ts:Info:src/aws/dynamodb.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:
src/aws/logs.ts:Info:URLs:
src/aws/datazone.ts:Info:src/aws/ecs.ts:Info:URLs:
src/aws/elasticache.ts:Info:URLs:
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/cognito-idp.ts:Info:URLs:
src/aws.ts:Info:Single Functions:postProcess: function (out) {
if (out.trim() == "") {
return [];
}
return out.split("\n").map((line) => ({
name: line,
icon: "👤",
}));
} URLs:
src/aws/glue.ts:Info:src/aws/quicksight.ts:Info:URLs:
src/aws/iam.ts:Info:Single Functions:postProcess: function (out, tokens) {
try {
const accountId = JSON.parse(out)["Account"];
return [{ name: `arn:aws:iam::${accountId}-ID:root` }];
} catch (error) {
console.error(error);
}
return [];
} postProcess: function (out) {
return postPrecessGenerator(out, "OpenIDConnectProviderList", "Arn");
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"get-open-id-connect-provider",
"--open-id-connect-provider-arn",
"ClientIDList"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"get-open-id-connect-provider",
"--open-id-connect-provider-arn",
"ThumbprintList"
);
} postProcess: function (out) {
return postPrecessGenerator(
out,
"InstanceProfiles",
"InstanceProfileName"
);
} custom: async function (tokens, executeShellCommand) {
try {
const idx = tokens.indexOf("--instance-profile-name");
if (idx < 0) {
return [];
}
const param = tokens[idx + 1];
const { stdout } = await executeShellCommand({
command: "aws",
args: [
"iam",
"get-instance-profile",
"--instance-profile-name",
param,
],
});
const policies = JSON.parse(stdout)["InstanceProfile"];
return policies["Roles"].map((elm) => {
return {
name: elm["RoleName"],
};
});
} catch (e) {
console.log(e);
}
return [];
} postProcess: function (out) {
return postPrecessGenerator(out, "Users", "UserName");
} postProcess: function (out) {
return postPrecessGenerator(out, "Users", "Arn");
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-user-policies",
"--user-name",
"PolicyNames"
);
} postProcess: function (out) {
return postPrecessGenerator(out, "Groups", "GroupName");
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"get-group",
"--group-name",
"Users",
"UserName"
);
} postProcess: function (out) {
return postPrecessGenerator(out, "Policies", "Arn");
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-policy-versions",
"--policy-arn",
"Versions",
"VersionId"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-group-policies",
"--group-name",
"PolicyNames"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-attached-group-policies",
"--group-name",
"AttachedPolicies",
"PolicyArn"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-attached-group-policies",
"--group-name",
"AttachedPolicies",
"PolicyName"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-attached-role-policies",
"--role-name",
"AttachedPolicies",
"PolicyArn"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-attached-user-policies",
"--user-name",
"AttachedPolicies",
"PolicyArn"
);
} postProcess: function (out) {
return postPrecessGenerator(out, "Roles", "RoleName");
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-role-policies",
"--role-name",
"PolicyNames"
);
} postProcess: function (out) {
return postPrecessGenerator(out, "MFADevices", "SerialNumber");
} postProcess: function (out) {
return postPrecessGenerator(out, "VirtualMFADevices", "SerialNumber");
} postProcess: function (out) {
return postPrecessGenerator(out, "AccessKeyMetadata", "AccessKeyId");
} postProcess: function (out) {
return postPrecessGenerator(out, "AccountAliases");
} postProcess: function (out) {
return postPrecessGenerator(out, "SAMLProviderList", "Arn");
} postProcess: function (out) {
return postPrecessGenerator(out, "SSHPublicKeys", "SSHPublicKeyId");
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-ssh-public-keys",
"--user-name",
"SSHPublicKeys",
"SSHPublicKeyId"
);
} postProcess: function (out) {
return postPrecessGenerator(
out,
"ServerCertificateMetadataList",
"ServerCertificateName"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-service-specific-credentials",
"--user-name",
"ServiceSpecificCredentials",
"ServiceSpecificCredentialId"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-signing-certificates",
"--user-name",
"Certificates",
"CertificateId"
);
} custom: async function (tokens, executeShellCommand) {
return MultiSuggestionsGenerator(tokens, executeShellCommand, [
...identityStruct,
{
command: ["iam", "list-policies", "--scope", "Local"],
parentKey: "Policies",
childKey: "Arn",
},
]);
} custom: async function (tokens, executeShellCommand) {
return MultiSuggestionsGenerator(
tokens,
executeShellCommand,
identityStruct
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-instance-profile-tags",
"--instance-profile-name",
"Tags",
"Key"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-mfa-device-tags",
"--serial-number",
"Tags",
"Key"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-open-id-connect-provider-tags",
"--open-id-connect-provider-arn",
"Tags",
"Key"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-policy-tags",
"--policy-arn",
"Tags",
"Key"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-role-tags",
"--role-name",
"Tags",
"Key"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-saml-provider-tags",
"--saml-provider-arn",
"Tags",
"Key"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-server-certificate-tags",
"--server-certificate-name",
"Tags",
"Key"
);
} custom: async function (tokens, executeShellCommand) {
return listCustomGenerator(
tokens,
executeShellCommand,
"list-user-tags",
"--user-name",
"Tags",
"Key"
);
} URLs:
src/aws/ssm.ts:Info:src/aws/iot.ts:Info:URLs:
src/aws/connect.ts:Info: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:
src/aws/rds.ts:Info: |
Hello @withfig-bot,
Please add a 👍 as a reaction to this comment to show that you read this. |
Automated PR for latest AWS CLI release by https://github.com/withfig/aws-cli-plugin