awsについて初心者エンジニアに向けて、aws system managerのリソースグループの活用と管理方法を解説します。
こんにちは。今回は、awsについて初心者エンジニアに向けて、aws system managerのリソースグループの活用と管理方法を解説します。
awsは、さまざまなサービスやリソースを提供しており、それらを効果的に管理することは、awsを運用する上で重要な課題です。aws system managerは、awsリソースの管理と自動化をサポートするためのサービスであり、その中でもリソースグループは、複数のリソースをまとめて管理するための便利な機能です。
本記事では、aws system managerのリソースグループの作成方法や構成手順、タグ付けや組織化方法、監視とアラート設定、自動化とインフラストラクチャ管理、セキュリティとアクセス制御について詳しく解説していきます。
リソースグループの作成と構成手順
リソースグループを作成するには、awsコンソールにログインし、aws system managerの画面に移動します。以下の手順でリソースグループを作成することができます。
- awsコンソールにログインし、aws system managerの画面に移動します。
- 左側のサイドバーから「リソースグループ」を選択します。
- 「リソースグループの作成」ボタンをクリックします。
- リソースグループの名前、説明、タグなど必要な情報を入力します。
- リソースグループに追加するリソースを選択し、追加します。
- リソースグループの作成を確定します。
以上の手順で、リソースグループを作成することができます。リソースグループは、まとめて管理したいリソースをグループ化するための機能であり、同じプロジェクトや目的を持つリソースを一括して管理することができます。
リソースグループのタグ付けと組織化方法
リソースグループを効果的に活用するためには、タグ付けと組織化方法が重要です。タグ付けは、リソースに情報を付加することで、検索や絞り込み、監視などの目的に活用することができます。
以下に、リソースグループのタグ付けと組織化方法のサンプルコードを示します。
import boto3
# awsクライアントの生成
ssm_client = boto3.client('ssm')
# リソースグループのタグ付け
response = ssm_client.add_tags_to_resource(
resourcetypes=[
'aws::ssm::resourcedatasync',
],
resourceids=[
'resource_data_sync_id',
],
tags=[
{
'key': 'environment',
'value': 'production'
},
{
'key': 'project',
'value': 'myproject'
},
]
)
# リソースグループの組織化
response = ssm_client.create_group(
name='mygroup',
resourcequery={
'type': 'tag_filters_1_0',
'query': "{\"resourcetypefilters\":[\"aws::ssm::instanceinformation\"],\"tagfilters\":[{\"key\":\"environment\",\"values\":[\"production\"]}]}"
}
)
このように、リソースグループにはタグを付けることができます。例えば、環境別にリソースをグループ化したい場合は、"environment"というキーでタグを付けることで、環境ごとにリソースを絞り込むことができます。
リソースグループの監視とアラート設定
リソースグループでは、リソースの監視やアラート設定も行うことができます。aws system managerのコンソール画面やcloudwatchを使用して、リソースの状態やメトリクスを監視し、必要な場合にはアラートを設定することができます。
以下に、リソースグループの監視とアラート設定のサンプルコードを示します。
import boto3
# awsクライアントの生成
cloudwatch_client = boto3.client('cloudwatch')
# メトリクスの取得
response = cloudwatch_client.get_metric_data(
metricdataqueries=[
{
'id': 'm1',
'metricstat': {
'metric': {
'namespace': 'aws/ssm',
'metricname': 'cpuutilization',
'dimensions': [
{
'name': 'instanceid',
'value': 'i-1234567890abcdef0'
},
]
},
'period': 300,
'stat': 'average',
'unit': 'percent'
},
'label': 'average cpu utilization'
},
],
starttime=datetime.datetime.utcnow() - datetime.timedelta(minutes=5),
endtime=datetime.datetime.utcnow()
)
# アラートの設定
response = cloudwatch_client.put_metric_alarm(
alarmname='myalarm',
alarmdescription='this metric checks the average cpu utilization of an instance',
actionsenabled=true,
okactions=[
'arn:aws:sns:ap-northeast-1:123456789012:mytopic',
],
alarmactions=[
'arn:aws:sns:ap-northeast-1:123456789012:mytopic',
],
metricname='cpuutilization',
namespace='aws/ec2',
statistic='average',
dimensions=[
{
'name': 'instanceid',
'value': 'i-1234567890abcdef0'
},
],
period=300,
evaluationperiods=1,
threshold=70.0,
comparisonoperator='greaterthanthreshold'
)
このように、cloudwatchを使用してリソースグループのメトリクスを取得し、アラートを設定することができます。
リソースグループの自動化とインフラストラクチャ管理
リソースグループを活用することで、awsのインフラストラクチャを効率的に管理することができます。awsのインフラストラクチャ管理には、aws cloudformationやaws cdkを使用することで、リソースグループを自動化することができます。
以下に、リソースグループの自動化とインフラストラクチャ管理のサンプルコードを示します。
from aws_cdk import core
from aws_cdk import aws_ssm as ssm
class mystack(core.stack):
def __init__(self, scope: core.construct, id: str, **kwargs) -> none:
super().__init__(scope, id, **kwargs)
# リソースグループの作成
resource_group = ssm.cfnresourcegroup(
self, "myresourcegroup",
name="mygroup",
resource_query=ssm.cfnresourcegroup.resourcequeryproperty(
type="tag_filters_1_0",
query="{\"resourcetypefilters\":[\"aws::ssm::instanceinformation\"],\"tagfilters\":[{\"key\":\"environment\",\"values\":[\"production\"]}]}"
)
)
このように、aws cdkを使用してリソースグループを自動化することができます。aws cdkを使うことで、コードでインフラストラクチャを定義し、リソースグループを管理することができます。
リソースグループのセキュリティとアクセス制御
リソースグループには、セキュリティとアクセス制御の設定も行うことができます。aws identity and access management(iam)を使用して、リソースグループへのアクセス権限を設定することができます。
以下に、リソースグループのセキュリティとアクセス制御のサンプルコードを示します。
resources:
myresourcegroup:
type: aws::ssm::resourcedatasync
properties:
name: myresourcegroup
resourcequery:
type: tag_filters_1_0
query: "{\"resourcetypefilters\":[\"aws::ssm::instanceinformation\"],\"tagfilters\":[{\"key\":\"environment\",\"values\":[\"production\"]}]}"
mygrouprole:
type: aws::iam::role
properties:
assumerolepolicydocument:
version: '2012-10-17'
statement:
- effect: allow
principal:
service: ssm.amazonaws.com
action: sts:assumerole
policies:
- policyname: mygrouppolicy
policydocument:
version: '2012-10-17'
statement:
- effect: allow
action: ssm:describeresourcegroups
resource: arn:aws:ssm:*:*:resource-group/myresourcegroup
このように、iamロールを作成し、リソースグループへのアクセス権限を設定することができます。iamロールを使用することで、セキュリティとアクセス制御を強化することができます。
以上が、aws system managerのリソースグループの活用と管理方法についての解説です。リソースグループを使用することで、awsのリソースを効果的に管理し、運用コストを削減することができます。初心者の方でも、この記事を参考にして、aws system managerのリソースグループを活用してください。
参考ブログ記事:
【AWS System Manager】関連のまとめ
オンラインスクールを講師として活用する!