89a2389586
Documentation added inaaf034b
on Nov 17th 2016 says the S3 bucket can be specified with `s3.bucket`, but commitc8bcc4c
(#285) on Dec 18th 2016 used `s3bucket`. Instead of fixing the code (#552) to match the documentation this commit changes just the documentation so that existing configurations are not broken. Also, the `s3` object is passed as is to `AWS.S3()`, which does not know the option `bucket` (but silently ignores it in my test). http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#constructor-property Following the old documentation leads to this exception: 2017-09-23T09:42:38.079Z - error: MissingRequiredParameter: Missing required key 'Bucket' in params at ParamValidator.fail (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/param_validator.js:50:37) at ParamValidator.validateStructure (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/param_validator.js:61:14) at ParamValidator.validateMember (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/param_validator.js:88:21) at ParamValidator.validate (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/param_validator.js:34:10) at Request.VALIDATE_PARAMETERS (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/event_listeners.js:125:42) at Request.callListeners (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/sequential_executor.js:105:20) at callNextListener (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/sequential_executor.js:95:12) at /srv/hackmd/hackmd/node_modules/aws-sdk/lib/event_listeners.js:85:9 at finish (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/config.js:315:7) at /srv/hackmd/hackmd/node_modules/aws-sdk/lib/config.js:333:9 at Credentials.get (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/credentials.js:126:7) at getAsyncCredentials (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/config.js:327:24) at Config.getCredentials (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/config.js:347:9) at Request.VALIDATE_CREDENTIALS (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/event_listeners.js:80:26) at Request.callListeners (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/sequential_executor.js:101:18) at Request.emit (/srv/hackmd/hackmd/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
2.4 KiB
2.4 KiB
Guide - Setup HackMD S3 image upload
-
Go to AWS S3 console and create a new bucket.
-
Click on bucket, select Properties on the side panel, and find Permission section. Click Edit bucket policy.
-
Enter the following policy, replace
bucket_name
with your bucket name:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucket_name/uploads/*" } ] }
-
Go to IAM console and create a new IAM user. Remember your user credentials(
key
/access token
) -
Enter user page, select Permission tab, look at Inline Policies section, and click Create User Policy
-
Select Custom Policy
-
Enter the following policy, replace
bucket_name
with your bucket name:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::bucket_name/uploads/*" ] } ] }
-
Edit
config.json
and set following keys:{ "production": { ... "imageUploadType": "s3", "s3": { "accessKeyId": "YOUR_S3_ACCESS_KEY_ID", "secretAccessKey": "YOUR_S3_ACCESS_KEY", "region": "YOUR_S3_REGION" // example: ap-northeast-1 }, "s3bucket": "YOUR_S3_BUCKET_NAME" } }
-
In additional to edit
config.json
directly, you could also try environment variable.