Здесь есть пара вещей ...
Topic
является действительным TopicRef
, поэтому вам не нужно танцевать TopicRef.import
здесь. Topic#addToResourcePolicy
для добавления утверждений в политику Topic
вместо того, чтобы создавать ресурс TopicPolicy
самостоятельно. Таким образом, ваш код может закончиться примерно так:
var topic = new Topic(this, "myTopic", new TopicProps
{
DisplayName = "myTopic",
TopicName = "myTopic"
});
topic.AddToResourcePolicy(new PolicyStatement()
.Describe("Default")
.AddAwsPrincipal("*")
.AddActions("sns:Publish",
"sns:RemovePermission",
"sns:SetTopicAttributes",
"sns:DeleteTopic",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:Receive",
"sns:AddPermission",
"sns:Subscribe")
.AddCondition("StringEquals", /* needs to be a map of condition key to value */);
topic.AddToResourcePolicy(new PolicyStatement()
.Describe("ProviderBucketAllow")
.AddAwsPrincipal("*")
.AddAction("sns:Publish")
.AddCondition("StringEquals", /* needs to be a map of condition key to value */);
По умолчанию Elmah использует приложение AppPool GUID в качестве имени приложения по умолчанию. Это использует это в качестве ключа для идентификации ошибок в таблице Elmah_Error при рассмотрении веб-интерфейса, это создается через, это - HTTP-модуль.
Для меня определили задачу для исследования этой опции для моей компании ранее в этом году. Я не мог найти способ управлять этим по умолчанию, так как Elmah вытягивает имя приложения от HttpRuntime.AppDomainAppId
в файле ErrorLog.cs. Вы могли управлять им любым ключом, который Вы хотите; однако, это - GUID AppPool.
После этих слов я смог управлять файлом ErrorLog.cs для превращения, Elmah в вызываемую платформу вместо обработчика базировался один, и допускайте меня, установил ApplicationName. То, что я закончил тем, что делал, изменяло ErrorLog.cs для включения свойства, которое позволило мне определять имя как указано ниже:
public virtual string ApplicationName
{
get
{
if (_applicationName == null) { _applicationName = HttpRuntime.AppDomainAppId; }
return _applicationName;
}
set { _applicationName = value; }
}
То, что необходимо будет, вероятно, сделать, корректируют это по-другому и устанавливают ApplicationName не на HttpRuntime.AppDomainAppId
но, вместо этого, значение вытягивают от web.config. В целом, это возможно. Путем я сделал это, улучшил ErrorLog.Log(ex)
метод, таким образом, я мог использовать Elmah, имеет вызываемую платформу вне веб-приложений. Оглядываясь назад мне жаль, что я не сделал подход app/web.config вместо этого.
Одна вещь иметь в виду при изменении имени приложения в Elmah. http обработчик, который генерирует интерфейс/elmah/default.aspx, больше не будет работать. Я все еще пытаюсь найти время, чтобы вернуться позже вокруг к такому; однако, Вы, возможно, должны изучить создание пользовательского интерфейса при реализации.