参考

S3 bucketに紐付いたIAMユーザ作成について

middleman build 後のS3との同期(およびconfig.rb記述)について

S3 - Bucket

  • blog.ngsw.jp
  • Enable website hosting
    • Index Document: index.html
    • Error Document: index.html

とした。

S3 bucket policy

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
	"Version": "2008-10-17",
	"Id": "PolicyXXXXXXXXXXXXX",
	"Statement": [
		{
			"Sid": "StmtXXXXXXXXXXXXX",
			"Effect": "Allow",
			"Principal": {
				"AWS": "*"
			},
			"Action": "s3:GetObject",
			"Resource": "arn:aws:s3:::blog.ngsw.jp/*"
		}
	]
}

IAM

当該S3Bucket専用ユーザを作成した

Users

  • middleman-user (作成した後に削除した)
    • Access Key ID: AKIAIPY2CC2TIZYBK2TQ
    • Secret Access Key: D/ypsi8mGGQfvdG4VIDtm3+jIBiXoWBxkI/alqqn
      • なおこのユーザはすでに存在しない

Groups

  • blog.ngsw.jp@S3 (作成した)
    • policy は以下
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::blog.ngsw.jp"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::blog.ngsw.jp/*"
      ]
    }
  ]
}

当初上半分の

1
2
3
4
5
6
7
8
9
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::blog.ngsw.jp"
      ]
    }

の設定はしていたのだけれど、
下半分である、

1
2
3
4
5
6
7
8
9
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::blog.ngsw.jp/*"
      ]
    }

の設定がなかったので、
当該S3 bucketにアクセスできずはまっていた
うまく行かなかった場合には確認してみていただきたい

middleman-sync 設定

config.rb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
activate :sync do |sync|
  sync.fog_provider = 'AWS'
  sync.fog_directory = 'blog.ngsw.jp'
  sync.fog_region = 'ap-northeast-1'
  sync.aws_access_key_id = 'AKIAITLPF4IIJYZSTHCA'
  sync.aws_secret_access_key = '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'
  sync.existing_remote_files = 'keep'
  sync.gzip_compression = false
  sync.after_build = false
end

fog のエラーがでた

1
fog: the specified s3 bucket name(blog.ngsw.jp) contains a '.' so is not accessible over https as a virtual hosted bucket, which will negatively impact performance.  For details see: http://docs.amazonwebservices.com/AmazonS3/latest/dev/BucketRestrictions.html

middleman-sync は S3 bucket name が FQDN ドメイン名形式してるとこけるらしい。うける

さらに参考にした

middleman s3_sync 設定

config.rb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
activate :s3_sync do |s3_sync|
  s3_sync.bucket                     = 'blog.ngsw.jp'
  s3_sync.region                     = 'ap-northeast-1’
  s3_sync.aws_access_key_id          = 'AKIAIPY2CC2TIZYBK2TQ'
  s3_sync.aws_secret_access_key      = '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'
  s3_sync.delete                     = false
  s3_sync.after_build                = false
  s3_sync.prefer_gzip                = true
  s3_sync.path_style                 = true
  s3_sync.reduced_redundancy_storage = false
  s3_sync.acl                        = 'public-read'
  s3_sync.encryption                 = false
end
1
$ middleman s3_sync

で見事差分だけアップロードしてくれて大変うれしい