追記

雑記帳


2017-08-01 (Tue) [長年日記]

[AWS] Amazon S3のAPIとAWS CLI、IAM Policyの対応表

S3のAPIは、素のAPIと、AWS CLIのs3apiで使う時の名前と、IAM Policyで制御する時の名前がバラバラだったりするので、大変分かりづらい。ということで、表を作った。これでもまだ不完全または不正確な気がするので、気がついたらコメントいただけると嬉しい。

targetS3 APIAWS CLIIAM Policy
serviceGET Servicelist-bucketss3:ListAllMyBuckets
bucketDELETE Bucketdelete-buckets3:DeleteBucket
bucketDELETE Bucket analyticsdelete-bucket-analytics-configurations3:PutAnalyticsConfiguration
bucketDELETE Bucket corsdelete-bucket-cors
bucketDELETE Bucket inventorydelete-bucket-inventory-configurations3:PutInventoryConfiguration
bucketDELETE Bucket lifecycledelete-bucket-lifecycle
bucketDELETE Bucket metricsdelete-bucket-metrics-configurations3:PutMetricsConfiguration
bucketDELETE Bucket policydelete-bucket-policys3:DeleteBucketPolicy
bucketDELETE Bucket replicationdelete-bucket-replications3:DeleteReplicationConfiguration
bucketDELETE Bucket taggingdelete-bucket-taggings3:PutBucketTagging
bucketDELETE Bucket websitedelete-bucket-websites3:DeleteBucketWebsite
bucketGET Bucket (List Objects)list-objectss3:ListBucket
bucketGET Bucket (List Objects V2)list-objects-v2s3:ListBucket
bucketGET Bucket accelerateget-bucket-accelerate-configurations3:GetAccelerateConfiguration
bucketGET Bucket aclget-bucket-acls3:GetBucketAcl
bucketGET Bucket analyticsget-bucket-analytics-configurations3:GetAnalyticsConfiguration
bucketGET Bucket corsget-bucket-corss3:GetBucketCORS
bucketGET Bucket inventoryget-bucket-inventory-configurations3:GetInventoryConfiguration
bucketGET Bucket lifecycle (deprecated)get-bucket-lifecycle (deprecated)
bucketGET Bucket lifecycleget-bucket-lifecycle-configurations3:GetLifecycleConfiguration
bucketGET Bucket locationget-bucket-locations3:GetBucketLocation
bucketGET Bucket loggingget-bucket-loggings3:GetBucketLogging
bucketGET Bucket metricsget-bucket-metrics-configurations3:GetMetricsConfiguration
bucketget-bucket-notification (deprecated)
bucketGET Bucket notificationget-bucket-notification-configurations3:GetBucketNotification
bucketGET Bucket Object versions
bucketGET Bucket policyget-bucket-policys3:GetBucketPolicy
bucketGET Bucket replicationget-bucket-replications3:GetReplicationConfiguration
bucketGET Bucket requestPaymentget-bucket-request-payments3:GetBucketRequestPayment
bucketGET Bucket taggingget-bucket-taggings3:GetBucketTagging
bucketGET Bucket versioningget-bucket-versionings3:GetBucketVersioning
bucketGET Bucket websiteget-bucket-websites3:GetBucketWebsite
bucketHEAD Buckethead-buckets3:ListBucket
bucketList Bucket Analytics Configurationslist-bucket-analytics-configurations3:GetAnalyticsConfiguration
bucketList Bucket Inventory Configurationslist-bucket-inventory-configurationss3:GetInventoryConfiguration
bucketList Bucket Metrics Configurationslist-bucket-metrics-configurationss3:GetMetricsConfiguration
bucketList Multipart Uploadslist-multipart-uploadss3:ListBucktMultipartUploads
bucketPUT Bucketcreate-buckets3:CreateBucket
bucketPUT Bucket accelrateput-bucket-accelerate-configurations3:PutAccelerateConfiguration
bucketPUT Bucket aclput-bucket-acls3:PutBucketAcl
bucketPUT Bucket analyticsput-bucket-analytics-configurations3:PutAnalyticsConfiguration
bucketPUT Bucket corsput-bucket-corss3:PutBucketCORS
bucketPUT Bucket inventoryput-bucket-inventory-configurations3:PutInventoryConfiguration
bucketPUT Bucket lifecycle (deprecated)put-bucket-lifecycle (deprecated)
bucketPUT Bucket lifecycleput-bucket-lifecycle-configurations3:PutLifecycleConfiguration
bucketPUT Bucket loggingput-bucket-loggings3:PutBucketLogging
bucketPUT Bucket metricsput-bucket-metrics-configurations3:PutMetricsConfiguration
bucketput-bucket-notification
bucketPUT Bucket notificationput-bucket-notification-configurations3:PutBucketNotification
bucketPUT Bucket policyput-bucket-policys3:PutBucketPolicy
bucketPUT Bucket replicationput-bucket-replications3:PutReplecationConfiguration
bucketPUT Bucket requestPaymentput-bucket-request-payments3:PutBucketRequestPayment
bucketPUT Bucket taggingput-bucket-taggings3:PutBucketTagging
bucketPUT Bucket versioningput-bucket-versionings3:PutBucketVersioning
bucketPUT Bucket websiteput-bucket-websites3:PutBucketWebsite
objectDelete Multiple Objectsdelete-objects(s3:DeleteObject)
objectDELETE Objectdelete-objects3:DeleteObject
object(DELETE Object)(delete-object, delete-objects)s3:DeleteObjectVersion
objectDELETE Object taggingdelete-object-tagging(s3:DeleteObject)
objectGET Objectget-objects3:GetObject
object(GET Object)(get-object)s3:GetObjectVersion
objectGET Object ACLget-object-acls3:GetObjectAcl
objectGET Object ACL (Versioning)(get-object-acl)s3:GetObjectVersionAcl
objectGET Object taggingget-object-taggings3:GetObjectTagging
object(GET Object tagging)(get-object-tagging)s3:GetObjectVersionTagging
objectGET Object torrentget-object-torrents3:GetObjectTorrent
object(GET Object torrent)(get-object-torrent)s3:GetObjectVersionTorrent
objectHEAD Objecthead-objects3:GetObject
objectHEAD Object (Versioning)head-objects3:GetObject
objectOPTIONS object
objectPOST Object restorerestore-objects3:RestoreObject
objectPUT Objectput-objects3:PutObject
object(PUT Object)put-object-taggings3:PutObjectTagging
object(PUT Object)(put-object-tagging)s3:PutObjectVersionTagging
objectPUT Object (Versioning)put-objects3:PutObject
objectPUT Object - Copycopy-objects3:PutObject
objectPUT Object - Copy (Versioning)copy-objects3:PutObject
objectPUT Object aclput-object-acls3:PutObjectAcl
object(PUT Object acl)(put-object-acl)s3:PutObjectVersionAcl
objectAbort Multipart Uploadabort-multipart-uploads3:AbortMultipartUpload
objectComplete Mulitpart Uploadcomplete-mulitpart-uploads3:PutObject
objectInitiate Mulitpart Uploadcreate-multipart-uploads3:PutObject
objectList Partss3:ListMultipartUploadParts
objectUpload Partupload-parts3:PutObject
objectUpload Part - Copyupload-part-copys3:PutObject
buckets3:ReplicateDelete
buckets3:ReplicateObject

2016-12-21 (Wed) [長年日記]

[git] stageしてcommitする前に消してしまったファイルを復活させる

作業中に、誤って必要なファイルを消してしまった。不要なファイルをgit rmしようとして、ついうっかり別の必要なファイルをgit rmしてしまった。しかも、そのファイルは新規の未コミットで、git addを使ってstageした状態のファイルだった。実際に削除する前に警告が出たものの、気がつかずに消してしまった後に気がついて、慌ててしまった。

しかし、幸いgit addしていたため、objectとしては残っているはずと思って、探そうと思った。そして見つけたのがこれ。

利用したのは、resolvedされている長い方の回答ではなく、もう一つの方。下記のようなスクリプトが書いてある。

for b in $(git fsck --lost-found | grep blob | awk '{print $3}'); do git cat-file -p $b | grep -q ${UNIQUE_CODE} && echo $b; done

これは、git fcsk --lost-foundを使って、commitからは辿れないオブジェクトを探す。それらをgit cat-fileして、UNIQUE_CODE に指定した、探しているコードに含まれているはずのテキストをgrepするというもの。

このコードを使って、消してしまったobjectのhash値が得られるので、git cat-file -p <hash> を実行して、中身を取り出すことができる。これで取り戻すことができた。

こういうことができるのが、gitのいいところである。


2016-12-15 (Thu) [長年日記]

[AWS] CloudTrail用のS3 Bucket Policyの設定(全リージョン対応版)

以前に、CloudTrailのログを受け取るのに、S3 Bucket Policyでリージョンごとに設定を追加する方法を書いた。

Central regionやLondon regionが追加されたということで、また更新しないといけないかと思ったら、いつの間にか、今後登場するものも含めて、全てのリージョンに対応する方法が案内されていた。

つまり、下記のようなPolicyを適用すれば良いようだ。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AWSCloudTrailAclCheck20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::myBucketName"
        },
        {
            "Sid": "AWSCloudTrailWrite20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::myBucketName/[optional prefix]/AWSLogs/myAccountID/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
               }
            }
        }
    ]
}

myBucketName, optional prefix, myAccountID を書き換える。複数のアカウントから受ける場合は、myAccountIDはワイルドカード '*' にできる。