运行heroku run rake db:migrate
,我得到以下错误:缺少必需的参数:aws\u access\u key\id、aws\u secret\u access\u key
我做了问题25596504中建议的更正,特别是更改了文件载波。rb
至载波电波。rb
运气不好。我遵循Hartl教程第688页,该页指定将它们添加为$heroku config:set S3\u ACCESS\u KEY=
我认为发生此错误是因为var名称不匹配。
在卡里尔瓦夫。rb,您应该用前缀“aws”替换:s3_access_key_id和:s3_secret_access_key。
if Rails.env.production? CarrierWave.configure do |config| config.root = Rails.root.join('tmp') config.cache_dir = 'carrierwave' config.fog_credentials = { # Configuration for Amazon S3 :provider => 'AWS', # change var's name :aws_access_key_id => ENV['S3_ACCESS_KEY'], # change var's name :aws_secret_access_key => ENV['S3_SECRETE_KEY'] } config.fog_directory = ENV['S3_BUCKET'] end end
而且它可以被部署。
这是我在让AWS与Heroku一起工作了很长时间之后制作的一个教程,正如MichaelHartl在RubyonRails教程第11章中所描述的那样。我希望这有助于:
让Rails教程示例应用程序在Heroku和AWS之间工作是一个巨大的麻烦。但是我做到了。如果你找到了本教程,这意味着你可能遇到了一个无法克服的错误。那很好。我有几个。
你需要做的第一件事是回顾哈特尔提供的代码。请确保您完全按照所示输入(或复制/粘贴)。在本节的所有代码中,您可能只需要添加一个小代码。“区域”环境变量。如果您创建的存储桶不在默认的美国区域中,则需要这样做。稍后会有更多关于这个的信息。下面是/config/初始化器/carrier_wave.rb
的代码:
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
# Configuration for Amazon S3
:provider => 'AWS',
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY'],
:region => ENV['S3_REGION']
}
config.fog_directory = ENV['S3_BUCKET']
end
end
该行:区域=
您应该完全按照所示的方式使用该代码块。不要把你的实际钥匙在那里。我们会把他们分开送到Heroku
现在让我们转到您的AWS帐户和安全性。
首先,创建您的AWS帐户。在大多数情况下,这就像注册任何网站一样。制作一个漂亮的长密码并将其存储在安全的地方,比如加密密码管理器。当您创建帐户时,您将获得第一套AWS密钥。在本教程中,您将不会使用这些工具,但在将来的某个时候您可能需要它们,所以也请将它们保存在安全的地方
转到S3部分,制作一个铲斗。它必须有一个唯一的名字,所以我通常只把日期放在末尾,这样就可以了。例如,您可以将其命名为“my-sample-app-bucket-20160126”。创建bucket后,单击名称,然后单击属性。对你来说,知道你的桶所在的“区域”是很重要的。找到它,并记下来。你以后会用的
您的主帐户可能拥有对所有内容的完全权限,所以我们不要将其用于在两个web服务之间传输随机数据。如果它泄露出去,你可能要花很多钱。我们将使用有限的用户。在IAM部分创建新用户。我把它命名为“fog”,因为它是处理发送和接收的云服务软件。创建时,可以选择显示和/或下载与新用户关联的密钥。把它放在一个安全的地方是很重要的。它不会进入您的代码中,因为这可能会在其他人可以看到它的存储库中结束。另外,不要给这个新用户密码,因为它不会登录AWS仪表板
组建一个新的团队。我把我的叫做“s3railsbucket”。这是将分配权限的位置。将“雾”添加到此组
转到“策略”部分。单击“创建策略”,然后选择“创建您自己的策略”。给它一个以“允许”开头的名称,这样它就会显示在策略列表的顶部附近。这是一个巨大的清单。以下是我所做的:
策略名称:AllowFullAccessToMySampleAppBucket20160126
描述:允许对名为my-sample-app-bucket-20160126的S3存储桶进行远程写/删除访问
政策文件:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-sample-app-bucket-20160126",
"arn:aws:s3:::my-sample-app-bucket-20160126/*"
]
}
]
}
这就是AWS配置。我不需要制定允许“雾”列出桶中内容的策略,尽管我尝试的大多数教程都说这是必要的。我认为只有当你想要一个可以通过仪表板登录的用户时才有必要。
现在是Heroku配置。这些东西在你的命令提示符下输入,就像'heroku run rake db:迁移'之类的。这是您输入从先前创建的“雾”用户那里获得的实际访问密钥和秘密密钥的地方。
$ heroku config:set S3_ACCESS_KEY=THERANDOMKEYYOUGOT
$ heroku config:set S3_SECRET_KEY=an0tHeRstRing0frAnDomjUnK
$ heroku config:set S3_REGION=us-west-2
$ heroku config:set S3_BUCKET=my-sample-app-bucket-20160126
再看最后一个。还记得你看S3桶的属性吗?在此输入与区域关联的代码。如果您的桶不在俄勒冈州,您将不得不将
us-West-2
更改为您的实际区域代码。编写本教程时,此链接起作用:
http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
如果这不起作用,谷歌“AWS S3区域代码”。
在做了所有这些并仔细检查了代码中的错误之后,我让Heroku与AWS合作存储图片!
进入Heroku,进入应用程序,进入设置,点击显示配置变量。
单击右侧的“编辑”,然后在此处输入您的秘密:
S3_BUCKET: name of your bucket goes here
S3_ACCESS_KEY: xxxxx
S3_SECRET_KEY: xxxx
在配置/初始化器/carrierwave.rb或任何地方输入你的秘密应该有:
CarrierWave.configure do |config|
config.root = Rails.root.join('tmp') # adding these...
config.cache_dir = 'carrierwave' # ...two lines
config.fog_credentials = {
:provider => 'AWS', # required
:s3_access_key_id => ENV['S3_ACCESS_KEY'], # required
:s3_secret_access_key => ENV['S3_SECRET_KEY'], # required
:region => 'eu-west-1', # optional, defaults to 'us-east-1'
:host => 's3.example.com', # optional, defaults to nil
:endpoint => 'https://s3.example.com:8080' # optional, defaults to nil
}
config.fog_directory = ENV['S3_Bucket'] # required
config.fog_public = false # optional, defaults to true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end
我使用PuTTY密钥生成器生成了一个4096位RSA-2密钥,其中包含一个密码短语。 我保存了. ppk和一个openSSL格式的公钥。油灰格式公钥不起作用。 无论如何,我的错误如下: 有什么问题吗? 我使用Pageant来加载密钥,我使用Git Bash来尝试ssh连接。我也把密钥加载到GitHub,不知道我做错了什么。 我尝试在GitHub中添加新行,但没有添加新行
密码\u默认值和密码\u BCRYPT之间有什么区别?他们都使用河豚加密算法吗?算法的成本是多少?如何在PHP中设置密码\u散列生成255个散列长度而不是60个?
我正在与CheckMarx漏洞之一作斗争。我需要一些指导来支持这一点。以下是我的代码: 这里con是(HttpurlConnection)新URL(“一些URL”)。openConnection()。 所以,checkmarx在《in》中强调了这个问题。readLine()。 我尝试的变通方法: 1: StringEscape eUtils.unescapeJson(in.readLine()),
我最近正在研究文件加密/解密。 当我尝试用相同的密钥解密文件时,总是会发生EVP_CipherFinal_ex。 代码片段将在下面发布。 我做错什么了吗? 谢谢你的帮助。 加密 解密 顺便说一句:当我使用CipherInputStream/CipherOutStream时,它会正常工作。我想知道是否可以只使用FileInputStream/FileOutputStream?非常感谢。 编辑:加密功
我正在使用“BouncyCastle.NetCore”和“JoseJwt”库对web令牌进行签名和加密。我可以通过以下代码使用私钥签名。但要求也要执行OpenID JWT加密,以便加密JWT有效负载,我们需要使用提供的公钥字符串(使用X509密钥规范解码的base64)进行加密。使用RSA算法和JWE标头所需的编码应包括标头名称“alg”,值为:RSA\u OAEP\u 256。以下代码仅使用私钥
我试图编译代码时遇到了这个异常。我已经安装了eclips工具包,我正在使用EclipseKepler 异常线程"main"java.lang.NoClassDefFoundError: org/apache/共用/日志/LogFactory在com.amazonaws.Amazon WebServiceClient.(Amazon WebServiceClient.java:56)在test_to