一日遅れて投稿。

記事

調べた

LambdaでDocumentDBいじる方法

pythonは大学で数時間触れたレベルでしかないんですが、なんとなく感覚で書いてみます。

def 関数名(引数名1, 引数名2, ...):
    処理1
    処理2
    ...

関数を括弧で囲わない言語はちょっと違和感があるなぁ

  • ステータス取得してるQiita

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "rds:DescribeAccountAttributes",
                "rds:DescribeCertificates",
                "rds:DescribeDBClusterParameterGroups",
                "rds:DescribeDBClusterParameters",
                "rds:DescribeDBClusterSnapshotAttributes",
                "rds:DescribeDBClusterSnapshots",
                "rds:DescribeDBClusters",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBInstances",
                "rds:DescribeDBLogFiles",
                "rds:DescribeDBParameterGroups",
                "rds:DescribeDBParameters",
                "rds:DescribeDBSubnetGroups",
                "rds:DescribeEventCategories",
                "rds:DescribeEventSubscriptions",
                "rds:DescribeEvents",
                "rds:DescribeOrderableDBInstanceOptions",
                "rds:DescribePendingMaintenanceActions",
                "rds:DownloadDBLogFilePortion",
                "rds:ListTagsForResource"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "kms:ListKeys",
                "kms:ListRetirableGrants",
                "kms:ListAliases",
                "kms:ListKeyPolicies"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "logs:DescribeLogStreams",
                "logs:GetLogEvents"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/rds/*:log-stream:*",
                "arn:aws:logs:*:*:log-group:/aws/docdb/*:log-stream:*"
            ]
        }
    ]
}

上記からも、DocumentDB専用のポリシーは無くて、RDBと一緒ってことが分かります。

オチとしては、結局DocumentDBをいじりたかったら、RDBをいじるようなコードを書いて、'Engine'がdocdbのものだけを対象にすればよかったということが判明。めでたしめでたし。

そもそもboto3ってなんだっけ

yyyymmddフォーマットチェッカ作ってみた

import re

def is_yyyymmdd(yyyymmdd):
    
    if not re.fullmatch(r'\d{8}', yyyymmdd) :
        return False
    
    try:
        newDataStr="%04s/%02s/%02s"%(yyyymmdd[0:4],yyyymmdd[4:6],yyyymmdd[6:8])
        newDate=datetime.datetime.strptime(newDataStr,"%Y/%m/%d")
        return True
    except ValueError:
        return False

最初はこちら を参考に作っていたが、yyyymmddをチェックしたかったのと、

newDataStr="%04d/%02d/%02d"%(year,month,day)

の部分が、intで日付が来ることが想定されていたコードっぽかった為、ちょっと修正した。