STS(Security Token Service : 임시 자격 증명 서비스)는 적게는 몇 분에서 많게는 몇 시간까지 수명을 가지고 임시로 자격을 증명해주는 서비스이다. 자격 증명이 만료된 후의 Access Key와 Secret Key는 사용하지 못하게 된다. 또한 동적으로 원할 때 얼마든지 생성이 가능하다. 고정 Access Key와 다르게 STS는 보안에 조금 더 안전하다.
람다를 사용할 계정(A), 임시 자격을 발급하는 계정(B)
import { STSClient, AssumeRoleCommand } from "@aws-sdk/client-sts";
import { CloudWatchClient, GetMetricStatisticsCommand } from "@aws-sdk/client-cloudwatch";
// ELB Request
async function getProdELBRequest(msg) {
const REGION = "";
const ROLEARN = "";
// sts
const sts_client = new STSClient({ region: REGION });
const assumeRoleCommand = new AssumeRoleCommand({
RoleArn: ROLEARN,
RoleSessionName: "cross_acct_lambda",
})
const assumedRole = await sts_client.send(assumeRoleCommand);
// prod/cloudwatch
const cloudwatch_client = new CloudWatchClient({
region: REGION,
credentials: {
accessKeyId: assumedRole.Credentials.AccessKeyId,
secretAccessKey: assumedRole.Credentials.SecretAccessKey,
sessionToken: assumedRole.Credentials.SessionToken,
},
});
const getMetricStatisticsCommand = new GetMetricStatisticsCommand({
"StartTime": "",
"EndTime": "",
"Period": "86400",
"Statistics": ["Sum"],
"MetricName": "RequestCount",
"Namespace": "AWS/ELB",
"Dimensions": [
{
"Name": "LoadBalancerName",
"Value": "Enter load balancer name"
}
],
});
try {
const data = await cloudwatch_client.send(getMetricStatisticsCommand);
} catch (error) {
console.log(error);
}
}
포스팅 -감사합니다-