我正在尝试从 Spark 读取 s3 存储桶直到今天 Spark 总是抱怨请求返回 403
hadoopConf = spark_context._jsc.hadoopConfiguration()
hadoopConf.set("fs.s3a.access.key", "ACCESSKEY")
hadoopConf.set("fs.s3a.secret.key", "SECRETKEY")
hadoopConf.set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
logs = spark_context.textFile("s3a://mybucket/logs/*)
Run Code Online (Sandbox Code Playgroud)
Spark 说......无效的访问密钥 [ACCESSKEY]
但是,使用相同的 ACCESSKEY 和 SECRETKEY 这与 aws-cli 一起使用
aws s3 ls mybucket/logs/
Run Code Online (Sandbox Code Playgroud)
在 python boto3 中这是有效的
resource = boto3.resource("s3", region_name="us-east-1")
resource.Object("mybucket", "logs/text.py") \
.put(Body=open("text.py", "rb"),ContentType="text/x-py")
Run Code Online (Sandbox Code Playgroud)
所以我的凭据无效,问题肯定出在 Spark 上。
今天我决定打开整个 Spark 的“调试”日志,令我惊讶的是...... Spark 没有使用我提供的 [SECRETKEY] 而是......添加一个随机的???
17/03/08 10:40:04 DEBUG 请求:发送请求:HEAD https://mybucket.s3.amazonaws.com / Headers:(授权:AWS ACCESSKEY:[RANDON-SECRET-KEY],用户代理:aws -sdk-java/1.7.4 Mac_OS_X/10.11.6 Java_HotSpot(TM)_64-Bit_Server_VM/25.65-b01/1.8.0_65,日期:2017 年 3 月 8 日星期三 10:40:04 GMT,内容类型:application/x -www-form-urlencoded; charset=utf-8, …
amazon-s3 access-keys amazon-web-services http-status-code-403 apache-spark
将Instagram Basic 显示 API与我的网站集成。一切正常。从最近几天开始,一些媒体 URL 抛出错误代码403 ,并显示错误的 Url Timestamp消息(这些媒体之前工作正常)。我尝试刷新访问令牌并创建一个新的访问令牌,但没有任何帮助。并非所有媒体,但只有少数媒体给出了这个错误。
给出错误的 url
有人可以帮忙吗?蒂亚!
如果我DirectorySlash Off在我的.htaccess文件中设置并调用没有尾部斜杠的目录403-Forbidden,我从我的服务器获取.如果我用斜线调用它一切正常.
谁有人解释为什么?这是我完全匿名的.htaccess:
# GLOBAL CONFIG
Options +FollowSymlinks
DirectorySlash Off
AddDefaultCharset utf-8
php_value post_max_size 256M
php_value upload_max_filesize 256M
# BEGIN WordPress
RewriteEngine On
RewriteBase /folder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
# END WordPress
# REMOVE WWW
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud) 我想通过提供deny/allow指令来保护nginx中的某些位置,但我不希望局外人知道位置被拒绝.我希望局外人获得404,而不是403 http代码.我的配置代码段是
location /admin/ {
uwsgi_pass myupstream1;
include /path/to/uwsgi_params;
allow 127.0.0.1;
deny all;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试访问/ admin/nginx使用HTTP 403响应时,但我希望它以HTTP 404响应.任何配方都可以吗?
我正在尝试对S3 REST API执行HEAD对象请求但我仍然收到403 Forbidden错误,即使我在S3上具有必要权限的策略设置.响应主体是空的,所以我不认为它是一个签名问题.我已经尝试了几项政策变更,似乎没有任何改变.我能够正常PUT对象和DELETE对象,只是HEAD不起作用.
这是我的存储桶政策:
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:: 999999999999:user/User"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::my-bucket"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::999999999999:user/User"
},
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
更新:
正如迈克尔指出的那样,我的签名似乎是一个问题,尽管我没有看到什么.
def generate_url options={}
options[:action] = options[:action].to_s.upcase
options[:expires] ||= Time.now.to_i + 100
file_path = "/" + @bucket_name + "/" + options[:file_name] …Run Code Online (Sandbox Code Playgroud) 我认为我们刚刚发现iOS 9(2015年10月23日版)的一个错误,当时使用客户端SSL证书与后端API通信.与许多REST服务一样,我们的API生成4xx错误代码以传达状态.其中一个是当客户端尝试访问特定客户端ID无权访问的路径时出现403 Forbidden错误.请注意,在客户端SSL证书设置了有效连接并且客户端ID已经过身份验证之后,会发生此HTTP错误.
在iOS 9中,此序列将生成无效的客户端SSL错误:
FAILED: Error Domain=NSURLErrorDomain Code=-1206 "The server “our.server.here” requires a client certificate."
(注意:这是我的推文的后续内容:https://twitter.com/ckmaresca/status/657576686318256128 - 我认为SO是大多数人会搜索的地方)
ssl client-certificates http-status-code-403 ios app-transport-security
为了访问我的S3存储桶,我已经导出了我的信用卡
export AWS_SECRET_ACCESS_KEY=
export AWS_ACCESSS_ACCESS_KEY=
Run Code Online (Sandbox Code Playgroud)
我可以验证一切正常
aws s3 ls mybucket
Run Code Online (Sandbox Code Playgroud)
我也可以用boto3验证它在python中有效
resource = boto3.resource("s3", region_name="us-east-1")
resource.Object("mybucket", "text/text.py") \
.put(Body=open("text.py", "rb"),ContentType="text/x-py")
Run Code Online (Sandbox Code Playgroud)
这有效,我可以在桶中看到该文件.
但是,当我使用spark执行此操作时:
spark_context = SparkContext()
sql_context = SQLContext(spark_context)
spark_context.textFile("s3://mybucket/my/path/*)
Run Code Online (Sandbox Code Playgroud)
我很高兴
> Caused by: org.jets3t.service.S3ServiceException: Service Error
> Message. -- ResponseCode: 403, ResponseStatus: Forbidden, XML Error
> Message: <?xml version="1.0"
> encoding="UTF-8"?><Error><Code>InvalidAccessKeyId</Code><Message>The
> AWS Access Key Id you provided does not exist in our
> records.</Message><AWSAccessKeyId>[MY_ACCESS_KEY]</AWSAccessKeyId><RequestId>XXXXX</RequestId><HostId>xxxxxxx</HostId></Error>
Run Code Online (Sandbox Code Playgroud)
这就是我在本地提交作业的方式
spark-submit --packages com.amazonaws:aws-java-sdk-pom:1.11.98,org.apache.hadoop:hadoop-aws:2.7.3 test.py
为什么它适用于命令行+ boto3但是火花塞满了?
编辑:
使用s3a:// with的同样问题
hadoopConf = spark_context._jsc.hadoopConfiguration()
hadoopConf.set("fs.s3a.access.key", "xxxx") …Run Code Online (Sandbox Code Playgroud) amazon-s3 access-keys http-status-code-403 apache-spark pyspark
我将 Gsuite 用作 Saml IDP,以在内部应用上对我组织的用户进行身份验证。
一切正常,除了一点:当我的一个用户仅使用他/她的个人帐户登录时,Google 将失败:
403 错误:app_not_configured_for_user
这是有道理的,因为该应用程序仅供内部用户使用,但我希望能够强制 Google saml 身份验证显示帐户选择器,即使用户已经登录到一个帐户,因为这对于 oauth2 是可能的使用 prompt=select_account。
任何方式与 SAML 具有相同的行为?
[编辑]我实际上设法通过使用实现了我想要的
https://accounts.google.com/AccountChooser/?continue= $SAML_REQUEST$
[编辑 2] 这是在 ruby on rails 中进行适配的代码片段(使用ruby-saml)
配置/初始化程序/saml_override.rb
module OneLogin
module RubySaml
class Authrequest < SamlMessage
GOOGLE_ACCOUNT_CHOOSER_URL = "https://accounts.google.com/AccountChooser?continue="
alias_method :old_create, :create
def create(settings, params = {})
self.old_create(settings, params)
@login_url = GOOGLE_ACCOUNT_CHOOSER_URL + CGI.escape(@login_url)
end
end
end
end
Run Code Online (Sandbox Code Playgroud) saml http-status-code-403 oauth-2.0 google-oauth google-workspace
我们拥有所有用户都可以免费使用的 REST API 端点,以及用户在明确启用并支付某些特定功能后可以使用的其他端点。
如果用户尚未启用,从付费端点返回的正确状态代码应该是什么?
我看到两个选项:
402 被描述为非标准客户端错误状态响应代码,保留供将来使用,因此我认为这不是适合这种情况的正确状态代码。
还有其他状态代码更适合这种情况吗?
这不是一个重复的问题。
首先,我有3个“相同”的Drupal 6.20 CMS桌面类型网站,使用MySQL数据库5.7.23和PHP 5.6.40。
所有这 3 个网站都已存在多年,以前从未遇到过此问题。
最近,内置搜索的 3 个网站中的 2 个(站点 1)http://sam308.com/和(站点 2)http://closefocusresearch.com/也遇到了完全相同的问题。
问题是:
例如,在http://closefocusresearch.com/上,当我使用网站上的内置搜索表单,并使用两个词的术语(例如不带引号的“防弹衣”)或使用任何多词搜索词时包含空格,搜索结果会显示消息 ERROR 403 - FORBIDDEN。不过,下面的搜索结果网址没有改变。
该页面的搜索结果网址为:
http://closefocusresearch.com/search/node/body%20armor
Run Code Online (Sandbox Code Playgroud)
在出现此问题之前,上述搜索结果 url 将显示正确的搜索结果。
现在, url 中的%20导致错误 403 - FORBIDDEN 结果,如下图所示。
由于防弹衣这两个词之间的空格已被替换为%20,我现在遇到了 403 错误。仅当搜索词包含空格时才会发生这种情况,否则工作正常。
附带说明一下,如果手动将%20替换为%2520,将url 中的%替换为%25 ,如下所示,那么我会得到正确的搜索结果。
http://closefocusresearch.com/search/node/body%2520armor
Run Code Online (Sandbox Code Playgroud)
如果您想亲自测试,请使用主页上的站点搜索框。
我花了 3 天的时间试图在互联网和 drupal.org 上查找此行为的原因,但找不到解决方案。所有 3 个网站上的所有文件权限都是相同的。
我也尝试从我的托管公司获得支持,但他们无法提供任何帮助。
我还尝试修改 .htaccess 文件来纠正此行为,但没有成功。我不是编写 RewriteRule 规则的专家。
是否是最近的 Apache 更新错误导致了此问题?注意:我无法访问共享托管计划上的 Apache 系统。
关于如何解决这个问题有什么想法吗?
感谢您的时间。